我在onclick处理程序中遇到了一个奇怪的问题。
我在onclick上调用了一个javascript函数“download”。这已经在生产网站上使用了多年。最近,当我点击Firefox或Chrome中的按钮时,我收到一个奇怪的javascript错误(在IE8中不是问题)。 Firefox说“TypeError:下载不是函数”,Chrome说“TypeError:string不是函数”。
HTML:
<a onclick="download('position','container','ids');return false;" href="#">Run download</a>
JS:
function download(position, container, ids) {
alert('in download');
}
您可以在此Fiddle中看到此内容。
首先,我想知道为什么这不起作用(其他功能正常)。看起来如果我重命名该功能或使用按钮而不是链接,问题也将得到解决,但部署这样的改变将是一场噩梦。如果有必要,那很好,但我想知道为什么下载功能不再有效。
答案 0 :(得分:4)
似乎使用HTML5,<a>
标记支持名为“download”的新属性(例如,请参阅this link),默认情况下该值为空值。
如果您将代码更改为:
,则代码将有效<a onclick="self.download('position','container','ids');return false;" href="#">Run download</a>
事实上,事件(在这种情况下是onclick)在它们绑定的元素范围内运行(<a>
这里),因此“download”表示this.download(如果存在)。