今天写了段简单的代码,点击<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 onclick="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/ta...。真相大白了,原来HTML 5 中的<a> 标签新增了一个download属性,规定被下载的超链接目标。所以,onclick执行时,download指向的是<a> 标签对象中的download属性,因此才会抛出上面的错误。
  4. 既然找到了问题的原因,除了避免使用download作为函数名外,很容易想到另外一个解决方案,通过window引用download函数:
   <a onclick="window.download()">下载</a>

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

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

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

    今天写了段简单的代码,点击<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. 远程处理Remoting
  2. Windows 服务全攻略(2)
  3. 《OpenGL游戏程序设计》学习笔记---第七章图像、位图与OpenGL
  4. C语言memmove()函数: 复制内存内容(可以重叠的内存块)
  5. 简单使用ansible-playbook
  6. 使用python套用excel模板_Python自动化办公Excel-从表中批量复制粘贴数据到新表
  7. C++之使用IO库输入输出
  8. PHP PDO连接PostgreSQL报错 SCRAM authentication requires libpq version 10 or above in解决
  9. Android应用按Home键再从图标启动会再次经过LAUNCHER启动页
  10. 系统签名文件pk8x509.pem 转成jks或者keystore签名文件
  11. SPSS入门教程——土壤主成分优劣分析
  12. 永久消除自动产生的QQPCMgr
  13. 新浪博客服务器是不是在维护,近日新浪博客发布文章不能正常显示是为什么?...
  14. 【线代NumPy】第五章 - 行列式课后练习 | 伴随矩阵求逆 | Cramer公式求联立方程 | 简述并提供代码
  15. LTE学习:PHICH(一)
  16. 【深度学习】增强学习
  17. 学生网页作业——大型购物商城(1页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源码
  18. [图文]symbian与uiq开发教程(转)
  19. MySQL 之全文索引--fulltext
  20. 1.4. CFS调度算法

热门文章

  1. Android — 创建和修改 Fragment 的方法及相关注意事项
  2. Java二叉排序树(转)
  3. 基于jQuery上下切换的焦点图—带缩略图悬浮
  4. php 得到下周一和下周日
  5. BotenaGo 僵尸网络利用33个exploit 攻击数百万物联网设备
  6. 我发现Facebook Messenger漏洞可使安卓用户互相监听,获奖6万美元
  7. 线上线下同步开启安全盛宴 BCS 2020将于8月7日正式开幕
  8. 我如何判断漏洞奖励计划是否值得参加?如何获得最大收益?
  9. 关于跨平台技术选型的思考
  10. 链客区块链技术面试题目专题(三)