onclick下载函数是一个空字符串?

时间:2013-04-17 13:20:17

标签: javascript onclick

我在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中看到此内容。

首先,我想知道为什么这不起作用(其他功能正常)。看起来如果我重命名该功能或使用按钮而不是链接,问题也将得到解决,但部署这样的改变将是一场噩梦。如果有必要,那很好,但我想知道为什么下载功能不再有效。

1 个答案:

答案 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(如果存在)。