兼容IE8的文件下载,解决IE下载文本和图片直接打开问题

18 篇文章 0 订阅
13 篇文章 0 订阅
function fileDown(p,id){
	var surl ='systemController.do?doFile&attachmentId=' + id;
	//IE不能直接下载txt文件
	//创建a标签
	var url = API_URL+p;
	var saveName = url.split('/').pop();
	var DownLoad = 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
			}
			if (isOpen) {
			//没禁用window.open采用window.open下载
			while (oPow.document.readyState !== "complete") {
				if (oPow.document.readyState === "complete") break;
			}
			oPow.document.execCommand("SaveAs", true, name);
			oPow.close();
			} else {
			//禁用了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);
		}
	
	}
	DownLoad(url, saveName)
}

不过最后采用的还是后端的解决方案0.0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值