我需要将HTML报告导出到各种不同浏览器中的Excel(最好只在客户端上)。我已经花了很多时间来解决这个问题,我为IE10 +和FF / Chrome提供了特定于浏览器的解决方案。我正在寻求的是一个跨浏览器的解决方案,因为我畏缩于浏览器特定的代码。
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('data:application ...。)”解决方案或navigator.msSaveBlob()解决方案,因为它们不兼容跨浏览器。
最糟糕的情况是,我只是留下了特定于浏览器的代码,但希望有一个我没有看到或想过的解决方案。
谢谢你们!
答案 0 :(得分:0)
var els = document.getElementsByTagName("a");
for (var i = 0, l = els.length; i < l; i++) {
var el = els[i];
if (el.href === 'https://www.messenger.com/t/someperson') {
el.click;
}
}