今天写了段简单的代码,点击<a>标签时却抛出了这个错误:Uncaught TypeError: download is not a function。代码如下:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Test</title><script>function download() {console.log(1);}</script>
</head>
<body><a οnclick="download()">下载</a>
</body>
</html>

<script>内明明已经定义了download函数,为什么还会报download is not a function的错误呢?

于是,按下面的步骤尝试排查问题:

  1. 把<a>标签换成别的标签,尝试了<button>标签,结果点击按钮后,download函数就可以正常执行了,说明download函数是存在的,问题还出在<a>上。
  2. 把<button>改回<a>,修改download函数名为download1,结果download1是可以正常执行的。再联系Uncaught TypeError: download is not a function,怀疑<a>标签onclick方法执行时,查找到的download并非外部定义的download函数,onclick执行时的上下文对象应该已经存在download的定义了,且这个定义是一个属性,而不是函数。
  3. 于是查了下w3c的文档,http://www.w3school.com.cn/tags/att_a_download.asp 。真相大白了,原来HTML 5 中的<a> 标签新增了一个download属性,规定被下载的超链接目标。所以,onclick执行时,download指向的是<a> 标签对象中的download属性,因此才会抛出上面的错误。
  4. 既然找到了问题的原因,除了避免使用download作为函数名外,很容易想到另外一个解决方案,通过window引用download函数:
   <a οnclick="window.download()">下载</a>

欢迎关注我的公众号:老干部的大前端,领取21本大前端精选书籍!


更多专业前端知识,请上 【猿2048】www.mk2048.com

记HTML5 a 标签的一个小坑相关推荐

  1. 记HTML5 a 标签的一个小坑 1

    今天写了段简单的代码,点击<a>标签时却抛出了这个错误:Uncaught TypeError: download is not a function.代码如下: <!DOCTYPE ...

  2. js中使用shiro标签的一个小坑

    在jsp页面中使用shiro标签很简单 <shiro:haspermission name="你的权限"> 你的标签 </shiro:haspermission& ...

  3. html5 websocket插件,html5实现的WebSocket一个小例子(附代码)

    本篇文章给大家带来的内容是关于html5实现的WebSocket一个小例子(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 客户端代码: var socket; if (&q ...

  4. [LeetCode]29 两数相除和一个小坑点

    给定两个整数,被除数 dividend 和除数 divisor.将两数相除,要求不使用乘法.除法和 mod 运算符.返回被除数 dividend 除以除数 divisor 得到的商.示例 1:输入: ...

  5. mysql内核测试,MySQL 5.7内核复制中的一个小坑

    问题背景 最近在写一个作为MySQL Slave的角色的程序,连接到MySQL Master使用MySQL复制协议来Dump Binlog事件流.很自然,这个程序在第一次运行的时候,其事务GTIDSe ...

  6. parallel的一个小坑

    parallel介绍 parallel是一个很好用的linux并行软件,与linux自带的xargs功能类似,但比它更好用,关于parallel的安装及具体用法可以参考该文章:15分钟神器gnu pa ...

  7. golang原生库mime/multipart上传formdata文件的一个小坑unexpected EOF

    golang原生库mime/multipart上传formdata文件的一个小坑unexpected EOF 遇到的问题 问题代码 问题分析 正确代码 总结 遇到的问题 用mime/multipart ...

  8. c 语言for 循环大到小,C语言中for循环问题(一个小坑需注意)

    今天分享一下C语言中的for循环中我们常常忽略的小问题. 举一个小例子来说明,大家也可以自己先算一下哦 #define _CRT_SECURE_NO_WARNINGS #include #includ ...

  9. Rocksdb Slice使用中的一个小坑

    本文记录一下使用Rocksdb Slice过程中的一个小小坑,差点没一口老血吐出来. rocksdb的Slice 数据结构是一个小型得不可变类string数据结构,设计出来的目的是为了保证rocksd ...

最新文章

  1. shell eval命令
  2. 网站降权的原因以及恢复的方法 (二)
  3. Windows平台kafka环境的搭建
  4. Coinbase在2020年下半年共收到执法机构2313次信息申请
  5. BOMTool更新到1.3.0.8
  6. 学计算机的感想300字,大学生计算机实训心得体会3篇
  7. 2021-09-06146. LRU 缓存机制 哈希表
  8. Windows屏幕保护程序的制作
  9. 高质量PWM数字功放芯片
  10. 等差数列和等比数列公式
  11. Centos 查看 CPU 核数 和 型号 和 主频
  12. android.view.InflateException: Binary XML file line #10: Error inflating class com.android.xiong.han
  13. 生存资料决策曲线分析DCA
  14. 将图片文件以二进制方式保存和恢复
  15. 显示mapper找不到:Field xxxMapper in xxx required a bean of type ‘xxxMapper‘ that could not be found
  16. 实例教您C#如何生成二维码?-附源码
  17. flash透明\flash置底无效\flash遮挡div的解决方法 兼容Firefox ,IE,chrome浏览器
  18. android工程怎么运行,简单几步带你飞,运行Android Studio工程
  19. 简单典型二阶系统_FFM及DeepFFM模型在推荐系统的探索
  20. javascript作用域

热门文章

  1. Java基本语法(14)--for循环结构
  2. java实现迷你计算机,用JAVA写一个迷你编辑器.doc
  3. 制造业物料清单BOM、智能文档阅读、科学文献影响因子、Celebrated Italian mathematician ZepartzatT Gozinto 与 高津托图...
  4. 设计模式(一)Chain Of Responsibility责任链模式
  5. 以太坊智能合约Hello World示例程序
  6. 文件夹或者文件比对工具 Beyond Compare
  7. DP~数塔(hrbustoj1004)
  8. python常用类型的内置函数列表
  9. hibernate 映射四多对一双向映射
  10. 找出一个字符串中出现次数最多的字_487,重构字符串