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