javascript - Chrome 上 msSaveOrOpenBlob 的替代品

标签 javascript angular google-chrome internet-explorer mozilla

我需要找到替代“msSaveOrOpenBlob ",适用于 IE,适用于 Firefox 和 Chrome。特别是在 Chrome 上,它不起作用,并且不显示用于选择保存或打开文件的对话框。

你能建议我如何打开对话框让用户选择是要保存还是打开文件?

我实际上使用的是 Angular 6。

最佳答案

另一个SO response中提到,您需要测试浏览器类型并使用正确的 API:

var download_csv_using_blob = function (file_name, content) {
    var csvData = new Blob([content], { type: 'text/csv' });
    if (window.navigator && window.navigator.msSaveOrOpenBlob) { // for IE
        window.navigator.msSaveOrOpenBlob(csvData, file_name);
    } else { // for Non-IE (chrome, firefox etc.)
        var a = document.createElement("a");
        document.body.appendChild(a);
        a.style = "display: none";
        var csvUrl = URL.createObjectURL(csvData);
        a.href =  csvUrl;
        a.download = file_name;
        a.click();
        URL.revokeObjectURL(a.href)
        a.remove();
    }
};

或另见 SO .

关于javascript - Chrome 上 msSaveOrOpenBlob 的替代品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61203503/

相关文章:

javascript - 带变量的引用对象名称 - javascript

javascript - 从 api 转换日期和时间使时间继续

javascript - 如何制作点 "adder"按钮

javascript - Chrome JavaScript 调试 - 如何通过代码保存页面刷新或中断之间的断点?

javascript - 在 Chrome 中重新加载页面时如何防止重置表单输入?

html - CSS 在 IE 或 Firefox 中不工作 - Chrome 工作正常

javascript - 我的 Javascript 没有打印任何内容

java - 如何使用 Selenium 在框架内执行 javascript?

angular - 从 Angular 项目中 TypeLITE 生成的多级命名空间导入 TypeScript 枚举

javascript - 任何人都可以帮助我理解运行 ngserve (Angular 8) 时 cmd 中的这条消息吗?