兼容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以下的,我只想说,现在什么年代了,要解放思想,与时俱进啊,就不能动 ...
随机推荐
- composer学习之路01
以前对composer还是的理解很模糊,直到最近看一些资料,稍微有了一些浅显的了解. /* composer依赖包管理工具,如果一个项目是windows操作系统,那么composer就是360,他可以 ...
- setup FTP server on CentOS 7
Setup FTP Server on CentOS 7 Install vsftpd vsftpd (Very Secure File Transport Protocol Daemon) is a ...
- Python基础之数组和向量化计算总结
一.多维数组 1.生成ndarray (array函数) .np.array()生成多维数组 例如:import numpy as npdata1=[6,7.5,8,0,1] #创建简 ...
- 六、latex中的特殊字符
- FG面经Prepare: BST to Double LinkedList
BST to double linkedlist in inorder traversal sequenceFollow Up: 如果这个BST自带prev, next, 给一个value,插进去这个 ...
- Ubuntu 16.04 安装 Apache, MySQL, PHP7.2
先更新系统 sudo apt update 安装PHP 通过修改PPA源的方式来安装 sudo apt-get install software-properties-common python-so ...
- cnpm安装失败
解决办法: 先:npm config set registry "http://registry.npmjs.org/" 再:npm install -g cnpm
- 04-python3.5-模拟三级菜单-省-县-区域--01
#!/usr/bin/env python # -*- coding:utf-8 -*- #Author:XZ data = { '北京':{ "昌平":{ "沙河&qu ...
- springmvc <mvc:default-servlet-handler/> & <mvc:annotation-driven>
1. mvc 标签内部加载的基础类: 1). <mvc:view-controller> 1 org.springframework.web.servlet.handler.SimpleU ...
- sission的使用
链接:https://pan.baidu.com/s/10B2V9g9OLmOY-9dKVoA15Q 提取码:fy7c 通过sission实现记录人数截图如下: