https://blog.csdn.net/u014628388/article/details/81738704

问题描述
window.URL.createObjectURL()可以直接生成blob:开头的链接,该链接产生于浏览器端,不会占用服务器资源。

window.URL.createObjectURL()在IE10, IE11以及Microsoft Edge中生成的blob:链接,你不能把它加到一个<a>节点上,也不能直接在浏览器地址栏打开访问,并且得到“Error: 拒绝访问。”错误。open links made by window.URL.createObjectURL in IE/Edge这样的提问到处都是,IE9根本不支持window.URL.createObjectURL创建Blob URLs就更惨了。

Microsoft Internet Explorer / Microsoft Edge和高大上的Google Chrome / Mozilla Firefox对于window.URL.createObjectURL创建Blob链接最直观的区别在于得到的blob:链接形式不一样,分别在微软浏览器和标准浏览器中运行以下代码,得到两种Blob链接形式

第一种为chrome和firefox生成的带有当前域名的标准blob:链接形式
第二种为Microsoft IE和Microsoft Edge生成的不带域名的blob:链接。
可以通过window.URL.createObjectURL(new Blob()) . indexOf(location.host) < 0来检测是否是IE或早期生成Object URL不带域名的Edge。如果表达式返回true则时IE或Edge旧版本。

解决方案
Blob URL  is not supported by IE due to security restrictions.

IE has its own API for creating and downloading files, which is called msSaveOrOpenBlob.

Here is my cross-browser solution that works on IE, Chrome and Firefox:

var download_csv_using_blob = function (file_name, content) {
var csvData = new Blob([content], { type: 'text/csv' });
// for IE
if (window.navigator && window.navigator.msSaveOrOpenBlob) {
window.navigator.msSaveOrOpenBlob(csvData, file_name);
}
// for Non-IE (chrome, firefox etc.)
else {
var a = document.createElement('a');
document.body.appendChild(a);
a.style = 'display: none';
var url = window.URL.createObjectURL(csvData);
a.href = url;
a.download = file_name;
a.click();
a.remove();
window.URL.revokeObjectURL(url);
}
};
 
---------------------
作者:杨勇Angus
来源:CSDN
原文:https://blog.csdn.net/u014628388/article/details/81738704
版权声明:本文为博主原创文章,转载请附上博文链接!

下周文件ie 谷歌兼容性处理的更多相关文章

  1. atitit.跨语言实现备份mysql数据库 为sql文件特性 api 兼容性java c#.net php js

    atitit.跨语言实现备份mysql数据库 为sql文件特性 api 兼容性java c#.net php js 1. 两个方法:: bat vs mysqldump(推荐)  vs   lang  ...

  2. PHP curl传输文件的版本兼容性

    /** * 存储文件到远程服务器 * * @param string $filePath * 文件绝对路径 * @param string $fileSaveUrl * 存储的远程目标地址 * @pa ...

  3. curl_setopt用此函数设置上传文件请求的兼容性调整

    在用curl_setopt($curl, CURLOPT_POSTFIELDS, $fileData);这个函数设置时会报错如下 curl_setopt(): The usage of the @fi ...

  4. 谷歌推出备份新工具:Google Drive将同步计算机文件

    Google 正在将云端硬盘 Drive 转变成更强大的文件备份工具.很快,Google Drive 将能监测并备份你电脑上的(几乎)所有文件,只要是你勾选的文档,Drive 就能同步至云端. 具体来 ...

  5. SRS+flv.js打造兼容性较高的直播、点播平台

    **************************************************************************************************** ...

  6. js中兼容性问题的封装(能力检测)

    所谓兼容性,就是看浏览器是否支持当前对象的属性或是方法,先通过获得页面文本内容的方式来了解兼容性,并封装函数或对象以解决此类问题. 获得页面文本内容的方式:innnerText 或textConten ...

  7. android项目中values中几个文件的作用

    最近反编译了几个Android软件,发现一些以前未用到的资源文件:ids.xml——为应用的相关资源提供唯一的资源id.id是为了获得xml中的对象而需要的参数,也就是Object = findVie ...

  8. 在Android中开源类库使用过程中兼容性等问题的讨论

    1.在Android4.0环境下编译的actionbarsherlock.slidingmenu类库,能不能在4.0以下的版本中使用 相信很多人跟我一样,都以为在低版本(如Android2.1或2.3 ...

  9. 14.8.2 Verifying File Format Compatibility 校验文件格式兼容性:

    14.8.2 Verifying File Format Compatibility 校验文件格式兼容性: 14.8.2.1 Compatibility Check When InnoDB Is St ...

随机推荐

  1. 远程桌面远程代码执行漏洞(CVE-2019-0708)Poc

    此漏洞影响范围: Windows 7 Windows Server 2008 R2 Windows Server 2008 Windows 2003 Windows XP Windows 8和Wind ...

  2. vs中找到接口和抽象类的具体实现类

    如何找到接口和抽象类的具体实现类 1,可以使用:ctrl+k clrl+t打开调用层次结构窗口: 2,移动到实现节点: 3,然后可以转到具体实现: 第二种安装插件 ReSharper 第三种方法: 在 ...

  3. event.target事件

    event.target <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...

  4. Integer Inquiry UVA-424(大整数)

    题意分析: 将字符串倒着存入int数组中,每次加完后再取余除去大于10的部分 关键:倒着存入,这样会明显缩短代码量. #include<iostream> #include<cstd ...

  5. 机械师实时调度示例(I) - 实时规划

    OptaPlanner创办人Geoffrey De Smet及其团队,在Red Hat 技术峰会上主题会场上,演示了一个通过OptaPlanner实现实时规划与调度的示例.Geoffrey及其团队专门 ...

  6. Oracle SQL developer客户端 如何连接已经安装完毕的Oracle服务器端

    对于刚刚安装完毕Oracle数据库后不知道如何链接使用,可参考以下解决方案. Part 1 首先说服务: 如果正确安装Oracle 11g客户端的朋友们注意了,想要Oracle数据库正常启动有如下三个 ...

  7. K-means: 多次random initialization来避免bad局部最优

    K-means algorithm initialize K-means算法中有一步为随机初始化cluster centroids,这步如何进行,我们将介绍一种运行比较好的方法,这种方法比其它初始化的 ...

  8. CheckList 如何梳理可减少上线的验证时间(总结篇)

    对CheckList的执行发起的思考? (1)功能越来越多,CheckList越补充越多,执行CheckList时间越来越长,如何减少上线的验证时间?(2)减少上线验证的时间外,如何保证质量?上线后少 ...

  9. PHP高手干货分享:不能不看的50个细节!

    1.用单引号代替双引号来包含字符串,这样做会更快一些.因为PHP会在双引号包围的字符串中搜寻变量, 单引号则不会,注意:只有echo能这么做,它是一种可以把多个字符串当作参数的”函数”(译注:PHP手 ...

  10. PureComponent下setstate不重新渲染

    https://blog.csdn.net/zhangheli123456/article/details/85053210 可以将  PureComponent 换成React.Component ...