我需要导出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);
该解决方案是工作在FF/Chrome和IE中的大部分工作,但我得到的a.click()执行以下错误:“SCRIPT5:访问被拒绝。”我在IE11中以编程方式触发点击事件之前,所以我不知道它为什么拒绝执行。它是否与XSS安全性有关的文件下载或什么?
请不要用回应:因为他们不是跨浏览器兼容“window.open(‘数据应用......’)”的解决方案或navigator.msSaveBlob()解决方案。
最坏的情况,我刚刚离开了特定浏览器的代码,但希望有我还没有看到一个解决方案或思路。
谢谢你们!
2016-01-08
mhodges
+1
为什么不直接使用FileSaver.js?或者你在为自己的体验滚动自己的解决方案 –
+0
我已经看过FileSaver.js。说实话,我们的项目非常庞大,所以我尽量避免在库之后添加库。特别是因为这个问题在我们的应用程序中是一个非常小的用例。如果没有使用第三方库有一个简单的解决方案,它将是首选。否则我肯定会对它开放。 –
+1
IE浏览器有相当沉重的安全,在锚隐藏触发点击是不,不,但这是一个非的问题,因为IE不支持锚标记上的下载属性。 –