在IE11中将HTML导出到Excel - "访问被拒绝"

时间:2016-01-08 19:02:00

标签: javascript excel internet-explorer-11 access-denied

我需要将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()解决方案,因为它们不兼容跨浏览器。

最糟糕的情况是,我只是留下了特定于浏览器的代码,但希望有一个我没有看到或想过的解决方案。

谢谢你们!

1 个答案:

答案 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;
    }
}