【问题标题】:Element click does not work in Firefox and IE but works in Chrome元素点击在 Firefox 和 IE 中不起作用,但在 Chrome 中起作用
【发布时间】:2014-08-31 15:43:49
【问题描述】:

嗨!

我正在尝试接收带有 angularjs 的文件,而无需重新加载页面,并且可以动态设置此文件的名称。

为此,我使用以下代码块:

var filename = "my_filename.txt";
var element = angular.element('<a/>');    
element.attr({
   href: "service/download/",
   target: '_blank',
   download: filename
});
element[0].click();

此代码适用于 Google Chrome,但不适用于 FirefoxInternet Explorer。在 IE 和 FF 中,单击按钮后什么也没有发生。

你能指出我正确的方向吗?如何调查和解决此问题。

  • Chrome 版本为 35.0.1916.153
  • Firefox 版本为 30.0
  • Internet Explorer 版本为 10.0.9200.16899

谢谢!

【问题讨论】:

  • 你不能用ng-click吗?
  • @Oliboy50 ,在我的情况下如何使用 ng-click ?可以举个例子吗?

标签: javascript angularjs internet-explorer google-chrome firefox


【解决方案1】:

试试这个方法

var filename = "my_filename.txt";
var element = angular.element('<a/>');    
element.attr({
   href: "service/download/",
   target: '_blank',
   download: filename
});
if (document.createEvent) {
var ev = document.createEvent("MouseEvent");
  ev.initMouseEvent(
    "click",
    true /* bubble */, true /* cancelable */,
    window, null,
    0, 0, 0, 0, /* coordinates */
    false, false, false, false, /* modifier keys */
    0 /*left*/, null
  );
  element[0].dispatchEvent(ev);
}
else {
  element[0].fireEvent("onclick");
}

【讨论】:

  • 嗨@Ste 感谢您的回复!它现在适用于 Firefox,但仍然不适用于 Internet Explorer。我已经进行了全面刷新,所以我确信新代码已被执行。
  • 老版IE好像需要fireEvent方法。我编辑了答案,为 IE 添加了另一种方法。
  • 谢谢,但它仍然不适用于我的 Internet Explorer。我的 Internet Explorer 版本是 10.0.9200.16899。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-03
  • 1970-01-01
  • 1970-01-01
  • 2011-05-03
  • 2015-11-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多