Javascript 下载在firefox&IE&Edge中不起作用(扩展问题)
我有一些JavaScript代码,如第一个代码片段中所示,可以在最新的Chrome中使用,但不能在最新的FireFox中使用。这段代码使用Blob对象将数据导出到html文件。奇怪的是,在FireFox中,代码没有抛出任何错误,而是得到一个没有扩展名的文件。 Edge&IE中的相同问题 导出代码:Javascript 下载在firefox&IE&Edge中不起作用(扩展问题),javascript,angular,Javascript,Angular,我有一些JavaScript代码,如第一个代码片段中所示,可以在最新的Chrome中使用,但不能在最新的FireFox中使用。这段代码使用Blob对象将数据导出到html文件。奇怪的是,在FireFox中,代码没有抛出任何错误,而是得到一个没有扩展名的文件。 Edge&IE中的相同问题 导出代码: downloadFile(data: Response | any, fileName: string, typefile) { const blob = new Blob([data], {
downloadFile(data: Response | any, fileName: string, typefile) {
const blob = new Blob([data], {type: typefile});
if (window.navigator.msSaveOrOpenBlob) {
window.navigator.msSaveBlob(blob, fileName);
} else {
const url = window.URL.createObjectURL(blob);
const anchor = document.createElement('a');
anchor.download = fileName;
anchor.href = url;
document.body.appendChild(anchor);
anchor.dispatchEvent(new MouseEvent(`click`, {bubbles: true, cancelable:
true, view: window}));
document.body.removeChild(anchor);
setTimeout(function() {window.URL.revokeObjectURL(url); }, 0);
}
}
这包括Safari>=10,Chrome>=55,包括Opera, *桌面上的Edge>=13,移动设备上的iOS 10和Chrome 在中了解更多信息 浏览器多边形填充* /**IE9、IE10和IE11需要以下所有多填充**/ 请在polyfills.ts中添加以下代码 导入“core js/es6/reflect”; 导入“core js/es7/reflect”
导入'zone.js/dist/zone' 我已经使用了以下代码,并在Edge和Firefox中进行了测试,它也能正常工作,除了Ipad上的Safari之外,Safari也能正常工作
if (window.navigator && window.navigator.msSaveOrOpenBlob) {
window.navigator.msSaveOrOpenBlob(data, filename);
}
else {
var url = window.URL.createObjectURL(data);
var a = document.createElement('a');
document.body.appendChild(a);
a.setAttribute('style', 'display: none');
a.href = url;
a.download = filename;
a.click();
window.URL.revokeObjectURL(url);
a.remove();
}
到底是什么问题?你怎么知道问题出在这段代码中?我只是假设我添加了它,但问题是一样的