js文件下载?简单啊,a标签的download属性,然后点击即下载。
http://www.w3school.com.cn/tags/att_a_download.asp
官方也说了只有 Firefox 和 Chrome 支持 download 属性。
那我IE11怎么办,于是我开始了无尽的百度与尝试。

// 方法一:window.open没用,只是打开文件。
let output = '/static/download/aaa.txt'
let downloadFileName = 'testa'
if (window.navigator.msSaveBlob) {
    // for ie 10 and later
    try {
        let blobObject = new Blob([output])
        window.navigator.msSaveBlob(blobObject, downloadFileName)
    } catch (e) {
        console.log(e)
    }
} else {
    let file = 'data:text/plain;charset=utf-8,'
    let logFile = output
    let encoded = encodeURIComponent(logFile)
    file += encoded
    let a = document.createElement('a')
    a.href = file
    a.target = '_blank'
    a.download = downloadFileName
    document.body.appendChild(a)
    a.click()
    a.remove()
}

// 方法二:iframe没用,只是打开没用下载功能。
let elemIF = document.createElement('iframe')
elemIF.style.display = 'none'
elemIF.src = '/static/download/aaa.txt'
document.body.appendChild(elemIF)
elemIF.click()

// 方法三:IE11的msSaveOrOpenBlob函数估计有效,但是这个通常用于将页面内容获取写入fileContent,然后下载,然而我是已存在文件aaa.txt。
let fileName = '/static/download/aaa.txt' // 文件地址
let downName = 'test' // 文件下载名称
const blob = new Blob([fileContent])
if (window.navigator.msSaveOrOpenBlob) {
    // 兼容IE10
    navigator.msSaveBlob(blob, downName)
} else {
    // chrome/firefox
    let aTag = document.createElement('a')
    aTag.download = downName
    aTag.href = URL.createObjectURL(blob)
    aTag.click()
    URL.revokeObjectURL(aTag.href)
}

// 方法四:execCommand('SaveAs')没用,保存整个网页可能有用吧,没有尝试成功。
let oPop = window.open('/static/download/aaa.txt', '', 'width=500, height=500, top=5000, left=5000')
for (; oPop.document.readyState !== 'complete';) {
    if (oPop.document.readyState === 'complete') {
        break
    }
}
oPop.document.execCommand('SaveAs')
oPop.close()

// 方法五:同事的系统有用然而我这不起作用,说白了还是创建了一个a标签,不应该有用不知道他们系统为什么可以。
let obj = document.createElementNS('http://www.w3.org/1999/xhtml', 'a')
obj.href = '/static/download/aaa.txt'
obj.download = 'test.txt'
let ev = document.createEvent('MouseEvents')
ev.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null)
obj.dispatchEvent(ev)

// 方法六:window.location.href没用,只是打开文件。
// window.location.href = '/static/download/aaa.txt'

// 方法七:最初提到的常用的a标签方法,IE不支持
let url = '/static/download/aaa.txt'
let link = document.createElement('a')
link.style.display = 'none'
link.href = url
link.setAttribute('download', 'aaa.txt')
document.body.appendChild(link)
link.click()

// 方法八:最后还是调用了后台的下载接口,适用于所有浏览
let url = this.$_apiUrl.download
window.open(url + '?name=aaa.txt')

注意:此处默认是get请求。

JS实现文档下载兼容谷歌、火狐、IE相关推荐

  1. Java8中文api汉化文档下载【谷歌翻译最精准版】【jdk api 1.8_google.CHM】

    Java8中文api汉化文档下载[谷歌翻译最精准版][jdk api 1.8_google.CHM] 这是Java8的汉化文档,谷歌翻译非常精准! 需要的同学微信扫码发送关键字 api8 即可获取下载 ...

  2. js导出word文档 可以兼容IE8+浏览器适配其他浏览器

    js导出word文档,兼容IE8浏览器 其他浏览器需要引入两个文件:FileSaver.js 和 jqueryWordExport.js 需要兼容IE8浏览器需要引用:FileSaver.js exc ...

  3. 从转载阿里开源项目 Egg.js 技术文档引发的“版权纠纷”,看宽松的 MIT 许可该如何用?

    作者 | 苏宓.彭慧中 出品 | CSDN(ID:CSDNnews) 开源迅速发展的这两年,很多内部问题逐渐凸显出来,如安全.版权.协议使用等. 近日,来自V2EX社区中一位开发者 @an168ban ...

  4. 帝国cms把网站文章内容生成word文档下载插件

    帝国cms把网站文章内容生成word文档下载插件 插件介绍 jQuery Word Export是一款可以将网页中的文字导出到微软Word文档中的jQuery插件.它通过FileSaver.js文件来 ...

  5. 纯前端vue利用docxtemplater实现生成word文档下载 word模板,勾选框的默认勾选。。

    首先需要下载如下工具: cnpm i docxtemplater pizzip jszip-utils file-saver -S 然后将它们引入: import JSZipUtils from &q ...

  6. 优学院只阅读不提供下载的文档下载

    优学院文档下载 https://ua.ulearning.cn/course_web/index.html?from=groupmessage#/main/article/10398/960/0 点开 ...

  7. minio 简介、中文文档、中英对照文档 下载

    minio 文档 下载链接(含jar包.源码.pom) 组件名称 中文-文档-下载链接 中英对照-文档-下载链接 minio-8.0.3.jar minio-8.0.3-API文档-中文版.zip m ...

  8. 将vue文档下载到本地预览

    将vue文档下载到本地预览 由于vue文档在服务器在国外,因此访问速度较慢,为了方便文档查看,可以将文档下载到本地预览 步骤 到vue的GitHub仓库下载文档源码 下载node.js和git安装到本 ...

  9. jQuery1·3中文参考文档下载

    现在才接触jQuery,看来我是很火星了.  附上jQuery1·3中文参考文档下载:http://files.cnblogs.com/conan304/jQueryAPI_CHM.zip 转载于:h ...

最新文章

  1. DBA大牛告诉你,如何让MySQL语句执行加速?
  2. MOSS2007 实现单点登陆
  3. 常用的Net Command
  4. 谈谈DictionaryT1,T2和ListT的问题
  5. .Net Crank性能测试入门
  6. Android官方开发文档Training系列课程中文版:构建第一款安卓应用之程序运行
  7. 风靡全球的儿童编程语言:Scratch
  8. Oracle入门第二天(下)——单行函数
  9. 走进爆发中的AIOps
  10. 数字电路实验怎么接线视频讲解_铆钉是怎么被铆接的,多种铆钉动画演示(内附视频讲解)...
  11. 理想窄高斯脉冲matlab,关于实际采样与理想采样的问题
  12. Intellij IDEA 神级插件
  13. linux基础知识和命令
  14. 手机扫电脑浏览器页面里的二维码后,电脑中该页面自动跳转,什么原理
  15. Android之页面添加水印
  16. 地形建模(二)--TIN拉伸成模型并贴纹理
  17. Unity_ClickToShow_FadeInAndOut
  18. php 实现二叉树的最大深度_PHP实现二叉树的深度优先遍历(前序、中序、后序)和广度优先遍历(层次)...
  19. 有些朋友没看清楚,我在这里再特意强调一下
  20. mdpda软件客户端_摇摇彩票mdpda

热门文章

  1. 将格林威治时间转换为北京时间
  2. JFinal极速开发微信公众号
  3. 快递物流查询,分析派件时效,查找正在派件的单号
  4. Pro Android学习笔记(一五五):传感器(5): 磁场传感器和方位(上)
  5. c罗图片带字经典语言,6张适合发朋友圈的人生哲理经典语句图片带字表情包 句句触动人心...
  6. Eureka的InstanceInfoReplicator类(服务注册辅助工具)
  7. A Bootiful Podcast: Building China-scale Infrastructure at Alibaba with Spring Cloud, Rsocket, and m
  8. pandas笔记之分列
  9. 无法连接虚拟设备 floppy0,因为主机上没有相应的设备。 您要在每次开启此虚拟机时都尝试连接此虚拟设备吗?
  10. 违反mysql三范式_违反数据库第三范式引发的一个问题