我需要導出HTML報告在各種不同的瀏覽器到Excel(僅最好在客戶端上)。我已經花了很多時間來解決這個問題,並且我正在爲IE10 +和FF/Chrome開發針對瀏覽器的解決方案。我正在尋求一種跨瀏覽器的解決方案,因爲我對瀏覽器特定的代碼感到畏懼。導出HTML到Excel中的IE11 - 「拒絕訪問」
var saveData = (function() {
var a = document.createElement("a");
document.body.appendChild(a);
a.style = "display: none";
return function (data, fileName) {
var html = data,
blob = new Blob([html], { type: "text/xml" }),
url = window.URL.createObjectURL(blob);
a.href = url;
a.download = fileName;
a.click();
window.URL.revokeObjectURL(url);
};
}());
var fileName = "download.xls"
saveData($('#TablesContainer').html(), fileName);
http://codepen.io/mhodges44/pen/dGWZvN
該解決方案是工作在FF/Chrome和IE中的大部分工作,但我得到的a.click()執行以下錯誤:「SCRIPT5:訪問被拒絕。」我在IE11中以編程方式觸發點擊事件之前,所以我不知道它爲什麼拒絕執行。它是否與XSS安全性有關的文件下載或什麼?
請不要用迴應:因爲他們不是跨瀏覽器兼容「window.open(‘數據應用......’)」的解決方案或navigator.msSaveBlob()解決方案。
最壞的情況,我剛剛離開了特定瀏覽器的代碼,但希望有我還沒有看到一個解決方案或思路。
謝謝你們!
爲什麼不直接使用FileSaver.js?或者你在爲自己的體驗滾動自己的解決方案 –
我已經看過FileSaver.js。說實話,我們的項目非常龐大,所以我儘量避免在庫之後添加庫。特別是因爲這個問題在我們的應用程序中是一個非常小的用例。如果沒有使用第三方庫有一個簡單的解決方案,它將是首選。否則我肯定會對它開放。 – mhodges
IE瀏覽器有相當沉重的安全,在錨隱藏觸發點擊是不,不,但這是一個非的問題,因爲IE不支持錨標記上的下載屬性。 – Musa