有空白頁面的代碼
let a = document.createElement("a");
a.href = res.data; // 這里的請(qǐng)求方式為get,如果需要認(rèn)證,接口上需要帶上token
a.click()
```
既然不想出現(xiàn)空白頁面的話,那不直接打開一個(gè)頁面而改成在當(dāng)前頁打開就可以了。
這時(shí)候想到iframe,借助iframe可以在原頁面打開一個(gè)頁面。
解決的方案
```
var不能改成let,就直接用var就可以了
var src = res.data;
var iframe = document.createElement('iframe');
iframe.style.display = 'none';
iframe.src = "javascript: '<script>location.href=\"" + src + "\"<\/script>'";
document.getElementsByTagName('body')[0].appendChild(iframe);
```
以上有報(bào)錯(cuò)403,解決的辦法就是
```
iframe.src = src
```
全代碼
```
var src = res.data;
let iframe = document.createElement('iframe');
iframe.src = src;
iframe.style.display = 'none';
document.getElementsByTagName('body')[0].appendChild(iframe);
```
以上代碼有會(huì)下載2遍,正在解決中。。。以下是解決iframe重復(fù)下載的問題
```
exportInvoice() {
if (this.importLoading) {
return;
}
this.importLoading = true;
let data = {
requestNo: this.apply.requestNo
};
buyerExport(data).then((res) => {
if (res.code == 200) {
this.importLoading = false;
this.downloadIfrme(res);//調(diào)用公告方法
} else {
this.importLoading = false;
}
});
},
寫在mixins文件里面的index.js公共文件中
//oss文件下載
downloadIfrme(res) {
//獲得id為downLoadListFrame的frame
let src = "";
let divFrame = document.getElementById("downLoadListFrame");
//判斷是否存在,如果存在先移除,再重新創(chuàng)建
if (divFrame != null) {
document.body.removeChild(divFrame);
}
src = res.data;
let iframe = document.createElement("iframe");
//setAttribute() 方法添加指定的屬性,并為其賦指定的值,如果這個(gè)指定的屬性已存在,則僅設(shè)置/更改值。
iframe.setAttribute("id", "downLoadListFrame");
iframe.src = "";
iframe.src = src;
iframe.style.display = "none";
document.body.appendChild(iframe);
//下載完以后刪掉
setTimeout(() => {
iframe.src = "";
iframe.remove();
}, 1000);
}
```