兼容ie8的前端下载方法
背景:在xp系统上 ie8浏览器的下载需求,后端返回资源路径.
方法:谷歌下采用aDown下载,ie采用window.open 触发下载,如果不能自动自动下载,采用execCommand("SaveAs")进行文件保存做下载(ps:保存无法在下载列表中查看),当禁用window.open时采用iframe进行下载(ps:此方法注意跨域);
完整代码如下,如发现bug及漏洞,请多交流.
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 = ;
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, , , , , , false, false, false, false, , null);
}
}
aLink.dispatchEvent(event);
}
}
兼容ie8的前端下载方法的更多相关文章
- 网站制作---eWebeditor不兼容IE8问题的解决方法
qq交流群:创梦技术交流群:251572072 创梦网络赚钱群:248318056 创梦娱乐休闲群:22 ...
- Extjs 兼容IE8常见问题及解决方法
1. 在IE8中整个页面都打不开,一般情况是: 页面组件中最后一个属性出现了逗号 没有多余的逗号,就很有可能是组件中没有设置renderTo:Ext.getBody(); 2. 页面按钮颜色失效 自定 ...
- 前端页面兼容ie8解决方法
一.通用兼容文件的引用: 1.HTML5标签兼容方案:html5shiv.js GitHub地址:https://github.com/aFarkas/html5shiv/ IE8不支持HTML5的新 ...
- placeholder兼容方法(兼容IE8以上浏览器)
//placeholder兼容方法(兼容IE8以上浏览器) var JPlaceHolder = { //检测 _check: function () { return 'placeholder' i ...
- a标签前端下载火狐兼容和笔记
1.a标签实现前端下载的谷歌兼容 我们都知道,文件下载的一种实现方案就是后端返回文件流,然后前端进行生成a标签并触发点击来下载.但是在火狐浏览器的时候,需要注意一些兼容性问题.原因是火狐的同源策略.官 ...
- 前端下载图片的N种方法
前几天一个简单的下载图片的需求折腾了我后端大佬好几天,最终还是需要前端来搞,开始说不行的笔者最后又行了,所以趁着这个机会来总结一下下载图片到底有多少种方法. 先起个服务 使用expressjs起个简单 ...
- 一个小方法解决RGBA不兼容IE8
原网页http://blog.csdn.net/leihope_/article/details/70158902 要在一个页面中设置一个半透明的白色div.这个貌似不是难题,只需要给这个div设置如 ...
- bootstrap3 兼容IE8浏览器
近期在使用bootstrap这个优秀的前端框架,这个框架非常强大,框架里面有下拉菜单.按钮组.按钮下拉菜单.导航.导航条.面包屑.分页.排版.缩略图.警告对话框.进度条.媒体对象等,bootstrap ...
- Bootstrap 3 兼容 IE8 浏览器
公司新上的项目,前端用的Bootstrap3的框架,但它已经放弃对IE9下的支持了.可IE8还是有着许多用户,不能不照顾到他们,IE7以下的,我只想说,现在什么年代了,要解放思想,与时俱进啊,就不能动 ...
随机推荐
- 2019-04-27 Python之有关文件的学习
一.文件 1.简介 二.文件的相关操作 1.打开文件 例如: f = open("F:\\text.txt", 'r') 只读模式,不可写入 2.读取文件 例如: f.readl ...
- 2019年 Gratner数据分析平台对比 - PowerBI大幅领先
先睹为快,看看你正在用的工具在哪里? 文末见2017-2018图 对比2019年, 1.ThoughtSpot好像发展很快 2.IBM...... 3.Microstrategy好像表现还不错 4.L ...
- 增长中的时间序列存储(Scaling Time Series Data Storage) - Part I
本文摘译自 Netflix TechBlog : Scaling Time Series Data Storage - Part I 重点:扩容.缓存.冷热分区.分块. 时序数据 - 会员观看历史 N ...
- Oracle集群时区
1.环境及问题 OS:SUSE 12SP3 DB:12.2.0.1.190115 2节点RAC Q:集群日志的时间和主机时间相差较大 grid@WWJD1:~> date Mon Feb 11 ...
- Centos上传下载命令
[root@localhost ~]# rz -bash: rz: command not found //安装下载上传插件 [root@localhost ~]# yum -y install lr ...
- 中国省市区json数据 三级联动
<label> <span>购买地址</span> <select name="PurchaseProvince" style=" ...
- myeclipse2017下载安装与破解详细教程
下载myeclipse2017百度云下载路径: 链接:https://pan.baidu.com/s/1wQYwO2zrUvbbUcjCB5B8IQ 密码:6igu myeclipse2017破解文件 ...
- JFinal框架
FJinal过滤器(tomcat) 创建java类继承JFinalConfig 会实现六个方法(有一个是拦截器的方法好像是,那个我好像看的跟struts2一样但是又没看懂暂时不写) Controlle ...
- linux下python3(Setup)项目
新建setup.py文件 写入 from setuptools import setup setup( name='tickets', #定义你项目的名称 py_modules=['tickets', ...
- Bioinfo online workshop
http://icb.med.cornell.edu/index.html%3Fpage_id=2068.html 1. Datacamp https://www.datacamp.com/cours ...