0

我的 onclick 处理程序有一个奇怪的问题。

我在 . 这已在生产网站上使用多年。最近,在 Firefox 或 Chrome 中单击按钮时,我收到一个奇怪的 javascript 错误(在 IE8 中不是问题)。Firefox 说“TypeError:下载不是函数”,Chrome 说“TypeError:字符串不是函数”。

HTML:

<a onclick="download('position','container','ids');return false;" href="#">Run download</a>

JS:

function download(position, container, ids) {
  alert('in download');
}

您可以在这个Fiddle中看到这一点。

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

4

1 回答 1

4

似乎在 HTML5 中,<a>标签支持名为“download”的新属性(例如,请参阅此链接),默认情况下该属性为空值。

如果您将代码更改为:

<a onclick="self.download('position','container','ids');return false;" href="#">Run download</a>

事实上,事件(在本例中为 onclick)在它们绑定到的元素范围内运行(<a>此处),因此“下载”表示 this.download(如果存在)。

于 2013-04-17T13:26:37.377 回答