function downloadX(url ,fileName){
const xhr = new XMLHttpRequest(); xhr.open('GET', url, true);
xhr.responseType = 'blob';
xhr.onload = function() {
if (xhr.status === 200) {
downloadFile(fileName,xhr.response);
}
}; xhr.send();
} function IE_downloadFile(fileName, content) { var ifr = document.createElement('iframe'); ifr.style.display = 'none'; document.body.appendChild(ifr);
ifr.contentWindow.document.write(content) //navigator.userAgent.indexOf("MSIE 6.0") > 0 || navigator.userAgent.indexOf("MSIE 7.0") > 0 ||
if (navigator.userAgent.indexOf("MSIE 8.0") > 0) {
fileName = fileName + ".txt";
}
ifr.contentWindow.document.execCommand('SaveAs', false, fileName); document.body.removeChild(ifr); } function X_downloadFile(fileName, content) {
var aLink = document.createElement('a');
var blob = new Blob([content]);
var evt = new MouseEvent("click", { "view": window, "bubbles": false, "cancelable": false });
aLink.download = fileName;
aLink.href = URL.createObjectURL(blob);
aLink.dispatchEvent(evt);
} function downloadFile(fileName, content) {
if (!/Trident|MSIE/.test(navigator.userAgent))
return X_downloadFile(fileName, content);
else
return IE_downloadFile(fileName, content); }

  

只是为了chrome30的简单版本

function downloadX(url, fileName) {
const xhr = new XMLHttpRequest(); xhr.open('GET', url, true);
xhr.responseType = 'blob';
xhr.onload = function () {
if (xhr.status === 200) { var aLink = document.createElement('a');
var blob = new Blob([xhr.response]);
var evt = new MouseEvent("click", { "view": window, "bubbles": false, "cancelable": false });
aLink.download = fileName;
aLink.href = URL.createObjectURL(blob);
aLink.dispatchEvent(evt);
}
}; xhr.send();
}

  

最新文章

  1. windbg学习---.browse打开一个新的command 窗口
  2. ArcGIS中添加进自定义的ttf字符标记符号
  3. 使自定义事件支持多绑定 js
  4. 树链剖分入门-Hdu3966 Aragorn's Story
  5. Android 设置 横屏 竖屏 (转)
  6. Leetcode#78 Subsets
  7. 借助bool判断使冒泡排序效率提高
  8. NDK开发之调用方法
  9. 【转】Jollen 的 Android 教學,#12: 如何建立選單 Menu
  10. NET平台下的Excel编程|C#操作Excel|Application和ApplicationClass的联系和区别
  11. 【细说Java】Java封箱拆箱的一些问题
  12. 一些不太常用的Linux命令
  13. 【LeetCode】284. Peeking Iterator
  14. python进程、进程池(二)代码部分
  15. MySql数据库在NodeJS中简单的基本操作
  16. 设计模式C++学习笔记之十五(Composite组合模式)
  17. 前端-JavaScript1-4——JavaScript之变量
  18. Android系统启动流程(三)解析SystemServer进程启动过程
  19. [2017BUAA软工助教]剩余个人作业与deadline
  20. HTML5新特性之文件和二进制数据的操作

热门文章

  1. [Grid Layout] Place grid items on a grid using grid-column and grid-row
  2. [React] Test friendly approach
  3. 开源server软件
  4. Python将被加入高考科目?你怎么看?
  5. 如何在一个div中使其子div居中
  6. 移动端iPhone系列适配问题的一些坑
  7. Filter,Listener(转)
  8. Winfrom 重新登录
  9. [02]基于webservice权限系统
  10. 使用Akka、Kafka和ElasticSearch等构建分析引擎 -- good