正文
兼容IE 8的文件下载方法
落雪无痕Web前端2
IE 8 中下载图片文本等文件会直接在网页打开,现需要使其弹出“另存为”而不是直接在网页打开。
直接上方法:
var downloadFile = function (url, name) {
if (!!window.ActiveXObject || "ActiveXObject" in window) {
//ie
var oPow = window.open(url, "", "width = 1, height = 1, top = 5000, left = 5000 ");
var isOpen = true; //判断window.open是否被禁用
try {
if (oPow == null) {
isOpen = false
}
} catch (err) {
isOpen = false
}
// //没禁用window.open采用window.open下载
// while (oPow.document.readyState !== "complete") {
// if (oPow.document.readyState === "complete") break;
// }
// oPow.document.execCommand("SaveAs", true, name);
// oPow.close();
if (!isOpen) {
//禁用了window.open采用iframe下载
var oIrame = document.createElement('iframe');
oIrame.style.width = "0px";
oIrame.style.height = "0px";
oIrame.style.opacity = 1;
document.body.appendChild(oIrame)
oIrame.src = url;
var IfDoc = oIrame.contentDocument || oIrame.document;
oIrame.onreadystatechange = function () { // IE下的节点都有onreadystatechange这个事件
if (oIrame.readyState == "complete") {
// oIrame.execCommand("SaveAs", true, name)
document.body.removeChild(oIrame)
}
};
}
} else {
if (typeof url == 'object' && url instanceof Blob) {
url = URL.createObjectURL(url); // 创建blob地址
}
var aLink = document.createElement('a');
aLink.href = url;
aLink.download = name || ''; // HTML5新增的属性,指定保存文件名,可以不要后缀,注意,file:///模式下不会生效
var event;
if (window.MouseEvent) {
event = new MouseEvent('click');
} else {
if (document.createEvent) {
event = document.createEvent('MouseEvents');
event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
}
}
aLink.dispatchEvent(event);
}
}
本方法转自https://www.cnblogs.com/justnotwo/p/10613951.html
,非常感谢这位同学!
评论
test
学习了