首页 > 解决方案 > 无法使用AngularJS在Chrome以外的任何浏览器中下载变量到文件

问题描述

我需要允许用户下载 CSV 文件,我将 CSV 作为字符串值。以下功能适用于 Chrome,但不适用于 IE 10/11、Edge 或 Firefox。

function downloadCSV(CSV, fileName) {
        var data = "data:text/json;charset=utf-8," + encodeURIComponent(CSV);
        var downloader = document.createElement('a');

        downloader.setAttribute('href', data);
        downloader.setAttribute('download', fileName+'.csv');
        downloader.click();
    };

这在 Chrome 中完美运行。

其他浏览器能够在 console.log 中看到 CSV 变量,但不会下载。Edge 将在控制台中输出一个警告,其中包含一个包含 CSV 内容的巨大链接,如果我单击该链接,则会在 Debugger 窗口中将 CSV 显示为字符串变量。触发上述功能时,Firefox 不会给出错误或警告。

我已经尝试为不同的浏览器添加兼容性,但它并没有改变任何东西。

<system.webServer>
    <httpProtocol>
          <customHeaders>
            <clear />
            <!--<add name="X-UA-Compatible" value="IE=10" />
            <add name="X-UA-Compatible" value="IE=11" />-->
            <add name="X-UA-Compatible" value="IE=edge" />
          </customHeaders>
        </httpProtocol>
</system.webServer>

标签: angularjsdownloadcreateelementencodeuricomponent

解决方案


推荐阅读