在用vue做前端开发时,需要对列表加一个导出功能,如下写法,没有else里面的,在ie之外的浏览器都可以正常导出,可是在ie里却没有反应,后来加上else 里面这句即可以了。
在这里插入图片描述
代码是这样的:
expor(this.exportDatas).then(res => {
const blob = new Blob([res.data])
const fileName = ‘某表.xls’
if (‘download’ in document.createElement(‘a’)) {
const a = document.createElement(‘a’)
a.href = URL.createObjectURL(blob)
a.download = fileName
a.style.display = ‘none’
document.body.appendChild(a)
a.click()
URL.revokeObjectURL(a.href)
document.body.removeChild(a)
} else {
navigator.msSaveBlob(blob, fileName)
}
}).catch((error) => {
this.$message.error(error)
})
工作中遇到的问题,备份一个。
更新:
如上方法在win10 的edge浏览器中不兼容,所以代码改成如下方法就可以顺利兼容chrome , firefox, IE, edge 了
在这里插入图片描述
代码:
if (window.navigator && window.navigator.msSaveOrOpenBlob) {
navigator.msSaveBlob(blob, fileName)
}else{
const a = document.createElement(‘a’)
a.href = URL.createObjectURL(blob)
a.download = fileName
a.style.display = ‘none’
document.body.appendChild(a)
a.click()
URL.revokeObjectURL(a.href)
document.body.removeChild(a)
}
~~各种浏览器的兼容真烧心:)

Logo

前往低代码交流专区

更多推荐