2

嗨!元素點擊不適用於Firefox和IE,但適用於Chrome

我試圖接收一個沒有頁面重載的angularjs文件,並且可以動態地爲這個文件設置一個名字。

爲此,我用下面的代碼塊:

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

該代碼完全適用於谷歌瀏覽器,但它並不適用於火狐的Internet Explorer工作。在IE和FF按鈕點擊後沒有任何事情發生。

請你指點我正確的方向?如何調查和解決這個問題。

  • Chrome版本爲35.0.1916.153
  • Firefox的版本是30.0
  • Internet Explorer版本是10.0.9200.16899

謝謝!

+0

你不能用'NG-click'? – Oliboy50

+0

@ Oliboy50,我如何在我的情況下使用'ng-click'?你能舉個例子嗎? – sirdarpeace

回答

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

**您好@ Ste ** 感謝您的回覆!它現在適用於Firefox,但仍然不適用於Internet Explorer。我已經完全刷新了,所以我確信新代碼已經執行。 – sirdarpeace

+0

看來,舊的IE需要fireEvent方法。 我編輯了我的答案,爲IE添加了另一種方式。 – Bolza

+0

謝謝,但它仍然不適用於我的Internet Explorer。我的Internet Explorer版本是10.0.9200.16899。 – sirdarpeace

相關問題