window.open被瀏覽器攔截的解決辦法

今天在處理程序的過程中,發現window.open方法會被瀏覽器攔截,導致無法打開新頁面,查閱相關資料後發現,主要原因是瀏覽器爲了維護用戶安全和體驗,禁止在javascript中直接使用window.open(url)來打開新的鏈接,window.open(url,”_self”)改變當前的窗口是可以生效的。爲了實現window.open打開新窗口不被瀏覽器攔截,我們只能通過模擬用戶操作的方式來實現。
我們可以模擬用戶點擊a標籤的操作來實現這個功能,代碼如下:

//新窗口打開網頁
function openWin(url) {
try {
var el1 = document.createElement('a');
el1.setAttribute("target", "_blank");
el1.setAttribute("id", "openWin");
el1.setAttribute("href", url);
document.body.appendChild(el1);
document.getElementById("openWin").click();//點擊事件
document.body.removeChild(el1);
}
catch (e) {
window.open(url);
}
}

首先創建了個A標籤,然後將url賦值給a標籤,將設置好的a標籤添加到Body中,js調用a標籤的click事件。

備註:此原創文章最早發表於博主個人站,原文鏈接window.open被瀏覽器攔截的解決辦法_IT技術小趣屋,轉載請標明出處。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章