最新解決方案:
新打開頁面, 在設(shè)置地址, 這樣就不存在問題
var newTab = window.open('about:blank')
newTab.location.href = url;
總結(jié)[方法還是存在問題]
- 早期下載的簡單用法 :
window.open(downloadUrl)
- 下載彈框會被攔截, 解決方案是使用 form 來實(shí)現(xiàn)
//Jquery 版, 多次下載防止,添加多個 form
if ($('#_downloadWin').length > 0) {
$('#_downloadWin').attr('action', url);
$('#_downloadWin input').val(path);}
else {
// 傳參 則在 form 里面 添加 隱藏域(<input type="hidden"/>)
$('body').append($(`<form id="_downloadWin" action="${url}" target="_blank" method="get"><input name="path" type="hidden" value="${path}" /></form>`));
}
$('#_downloadWin').submit();
//JavaScript版
var f = document.createElement("form");
document.body.appendChild(f);
var i = document.createElement("input");
i.type = "hidden";
f.appendChild(i);
i.value = "5";
i.name = "price";
f.action = "aa.asp"; //下載的url 地址
f.submit();
問題描述與解決方案
早期下載文件的時候,是直接使用 window.open(downloadUrl)
這種簡單粗暴的方法來實(shí)現(xiàn)的.
但是到目前(2016.05.17), window.open 已經(jīng)被大部分的主流瀏覽器給攔截了, 如下圖, 需要人工在點(diǎn)擊一次允許打開鏈接. 這樣大大的降低了 友好的交互.
于是需要尋找新的解決方案, 就使用 form 表單元素來進(jìn)行下載, 注意 Form 表單的 target 要設(shè)置為 _blank 在新的窗口打開,這樣就不會影響本頁面*