2017-09-15 72 views
5

嘗試調用anchor標記的.click()auto click url。 代碼在所有瀏覽器中都正常工作,除了Internet Explorerv11.click()在IE11中拒絕訪問

任何幫助將不勝感激。

var strContent = "a,b,c\n1,2,3\n"; 
var HTML_APS = strContent; 
var data = new Blob([HTML_APS]); 
var temp_link = document.createElement('a'); 
temp_link.href = URL.createObjectURL(data); 
temp_link.download = "report_html.htm"; 
temp_link.type = "text/html"; 
temp_link.style = "display:none"; 
document.body.appendChild(temp_link); 
if (confirm("Press a button!") == true) { 
    temp_link.click(); 
    temp_link.remove(); 
} 

這裏是fiddle

+0

的IE瀏覽器,使用'navigator.msSaveOrOpenBlob' - https://jsfiddle.net/ hcqn9m5a/3/ –

+0

這裏沒有jQuery代碼,爲什麼你有這個標籤? – Barmar

回答

6

對於IE,你可以使用navigator.msSaveOrOpenBlob

因此,跨瀏覽器的代碼將是

var strContent = "a,b,c\n1,2,3\n"; 
var HTML_APS = strContent; 
var data = new Blob([HTML_APS]); 

if (confirm("Press a button!") == true) { 
    if (navigator.msSaveOrOpenBlob) { 
    navigator.msSaveOrOpenBlob(data, "report_html.htm"); 
    } else { 
    var temp_link = document.createElement('a'); 
    temp_link.href = URL.createObjectURL(data); 
    temp_link.download = "report_html.htm"; 
    temp_link.type = "text/html"; 
    document.body.appendChild(temp_link); 
    temp_link.click(); 
    temp_link.remove(); 
    } 
} 
+0

因此對於IE「var data = new Blob([HTML_APS]);」這不會起作用代碼「navigator.msSaveOrOpenBlob(data,」report_html.htm「)」應該被執行? – skoley

+1

看看代碼...'var data = new Blob([HTML_APS]);'是爲所有瀏覽器...它只是如何下載它不同 –

+0

我的不好感謝解決方案:) – skoley

1

當使用下載屬性錨點時,這表示瀏覽器應該下載錨點指向的資源而不是導航到它。
它不支持IE11。 僅供參考click here

1

根據this SO答案,'下載'屬性尚未在Internet Explorer中實現。

下載屬性未在Internet Explorer中實現。

http://caniuse.com/download

對於Internet Explorer,可以使用 「另存爲」 命令。