3 回答
TA贡献1818条经验 获得超3个赞
对我来说,寻找可以挽救document.execCommand生命。它使用与iFrame其他一些示例类似的方法,但是execCommand使Save As功能保持一致。
这是一个例子
var getCsvFileForIE = function(target) {
var csvData = target.attributes["data-csv"].value;
if (navigator.appName === "Microsoft Internet Explorer") {
csvData = decodeURIComponent(csvData);
var iframe = document.getElementById('csvDownloadFrame');
iframe = iframe.contentWindow || iframe.contentDocument;
csvData = 'sep=,\r\n' + csvData;
iframe.document.open("text/html", "replace");
iframe.document.write(csvData);
iframe.document.close();
iframe.focus();
iframe.document.execCommand('SaveAs', true, 'data.csv');
} else {
if (console && console.log) {
console.log('Trying to call getCsvFileForIE with non IE browser.');
}
}
};
我们针对IE执行此操作,对于所有其他浏览器,我们使用标准的Data URI链接。您可以查看完整的要旨以获取更多详细信息。向安德鲁金发女郎(Andrew Blondau)表示指导的帽子提示。
更新
确定浏览器是否支持数据URI的更好方法
supportsDataUri = 'download' in document.createElement('a');
似乎IE仍然遇到问题。对于IE10 +,您可能需要使用,msSaveOrOpenBlob而对于IE8 / 9,您仍然需要在execCommand中进行操作iFrame。
更新2
存在用于检测数据uri方案的Modernizr问题。它引用了另一个SO答案。一定还要检查那些。
- 3 回答
- 0 关注
- 503 浏览
相关问题推荐
添加回答
举报