IE11瀏覽器下載文件報(bào)錯(cuò)拒絕訪問(wèn),兼容性處理

原始代碼,是先創(chuàng)建一個(gè)a標(biāo)簽,然后在生成一個(gè)url地址,在設(shè)置下載屬性,添加到DOM節(jié)點(diǎn)中,操作點(diǎn)擊事件,完了之后在移除a標(biāo)簽節(jié)點(diǎn)。

核心代碼如下:

   const blob = new Blob([res.data]);
   const a = document.createElement('a');
   a.href = window.URL.createObjectURL(blob);
   a.download = fileName;
   document.body.appendChild(a);
   a.click();
   document.body.removeChild(a);

使用IE11瀏覽器導(dǎo)出報(bào)錯(cuò)拒絕訪問(wèn)如下


image.png

在控制臺(tái)看了一下生成的節(jié)點(diǎn),發(fā)現(xiàn)a標(biāo)簽已經(jīng)生成了,卻發(fā)現(xiàn)a標(biāo)簽的下載屬性未添加, 未實(shí)現(xiàn)點(diǎn)擊這一動(dòng)作。

<a href="blob:5567C153-E677-4F45-9DB8-18C407E00880"></a>

使用 window.navigator.msSaveBlob(blob, defaultName) 代碼,去保存下載文件。

解決兼容性處理代碼如下

        exportTable () {
            this.loading = true;
            let qusMethod = this.method == 'get' ? 'getDownAjax' : 'postAjax';  // 請(qǐng)求方式判斷(只考慮get和post兩種方式)
            http[qusMethod](
                this.url,
                this.params,
                { responseType: 'blob'}
            ).then(res => {
                if(res.status === 200) {
                    this.loading = false;
                    const blob = new Blob([res.data]);
                    let ext = this.ext  || 'xlsx';
                    let fileName = `${this.filename}-${moment().format('YYYYMMDDHHmmss')}.${ext}`;
                    // ie兼容處理
                    if (window.navigator.msSaveBlob) {
                        window.navigator.msSaveBlob(blob, fileName);
                    } else {
                        const a = document.createElement('a');
                        a.href = window.URL.createObjectURL(blob);
                        a.download = fileName;
                        document.body.appendChild(a);
                        a.click();
                        document.body.removeChild(a);
                    }
                } else {
                    this.$message.error("請(qǐng)刷新頁(yè)面重試!");
                }

            }).catch(error => {
                console.log(error);
            })
        }

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • JavaScript代碼嵌入網(wǎng)頁(yè)的方法 JavaScript代碼只有嵌入網(wǎng)頁(yè),才能在用戶(hù)瀏覽網(wǎng)頁(yè)時(shí)運(yùn)行。 網(wǎng)頁(yè)中嵌...
    許先生__閱讀 1,255評(píng)論 0 1
  • 1. 介紹 瀏覽器可能是最廣泛使用的軟件。本書(shū)將介紹瀏覽器的工作原理。我們將看到,當(dāng)你在地址欄中輸入google....
    康斌閱讀 2,160評(píng)論 7 18
  • 簡(jiǎn)介網(wǎng)絡(luò)瀏覽器很可能是使用最廣的軟件。在這篇入門(mén)文章中,我將會(huì)介紹它們的幕后工作原理。我們會(huì)了解到,從您在地址欄輸...
    wengjq閱讀 2,299評(píng)論 2 15
  • 第1章 認(rèn)識(shí)JS JavaScript能做什么?1.增強(qiáng)頁(yè)面動(dòng)態(tài)效果(如:下拉菜單、圖片輪播、信息滾動(dòng)等)2.實(shí)現(xiàn)...
    mo默22閱讀 1,492評(píng)論 0 5
  • 前端開(kāi)發(fā)面試題 面試題目: 根據(jù)你的等級(jí)和職位的變化,入門(mén)級(jí)到專(zhuān)家級(jí),廣度和深度都會(huì)有所增加。 題目類(lèi)型: 理論知...
    怡寶丶閱讀 2,670評(píng)論 0 7

友情鏈接更多精彩內(nèi)容