【问题标题】:click() not being invoked on link element未在链接元素上调用 click()
【发布时间】:2015-01-09 21:37:43
【问题描述】:

这是代码:

var link = document.createElement("a");
    link.download = name;
    link.href = uri;
    link.click();

由于某种原因,IE 中没有调用下载。它适用于 Firefox、Chrome 和 Opera,但不适用于 IE。我正在使用最新版本的 IE 11。

我尝试在链接上设置一个单击事件处理程序,该处理程序会发出警报,以便我可以查看链接是否被单击,但什么也没发生。

有什么想法吗?

【问题讨论】:

  • 为什么要这样执行?
  • @Mouser 我正在尝试自动调用文件下载,作为其他功能的一部分。
  • 你试过使用 jQuery 吗?它是跨浏览器兼容的,也应该在 IE 11 中工作。
  • location.href = uri 如果是文件,应该会触发下载。

标签: javascript


【解决方案1】:

我现在无法测试 IE11,但请尝试:

(function() {
var a = document.createElement('a');
    a.setAttribute("href", uri);

    var dispatch = document.createEvent("HTMLEvents");
    dispatch.initEvent("click", true, true);
    a.dispatchEvent(dispatch);
}());

【讨论】:

    【解决方案2】:

    经过一些研究,似乎 link.click() 在 IE 中不起作用,因为 IE 不知道它应该在哪个元素上触发点击事件(即使它直接引用它)。它可以在其他浏览器中使用,因为它们可以准确地“猜测”到哪里触发它。

    我设法通过向 DOM 添加一个链接元素,然后通过查询选择器引用它,最后在其上调用 click() 方法来解决问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-10
      • 2018-12-05
      • 1970-01-01
      • 2011-01-04
      • 2014-09-02
      相关资源
      最近更新 更多