元素单击在Firefox和IE中不起作用,但在Chrome中有效

时间:2014-07-10 09:59:20

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

你好!

我正在尝试接收带有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 ,但它不适用于 Firefox Internet Explorer 。在IE和FF中,点击按钮后没有任何事情发生。

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

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

谢谢!

1 个答案:

答案 0 :(得分:5)

试试这种方式

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");
}