window.open打開新窗口被瀏覽器攔截的處理方法


一般我們在打開頁面的時候, 最常用的就是用<a>標簽,如果是新窗口打開就價格target="_blank"屬性就可以了, 如果只是刷新當前頁面就用window.location.reload(), 在某些特殊情況下也要用到另外一種新窗口打開的方法,就是window.open(),這個方法有一個問題就是會被基本所有的瀏覽器所攔截,要收到點擊確認打開才可以,這樣的體驗可以說是非常不友好的~~ 感覺像一個有病毒的程序~~

 

所以我們如果一定要用這個方法,但是又不想其被瀏覽器攔截, 有幾種方法,都可以解決,具體如何~~

第一種:

//所以常用的方法就是在超鏈接里加入onclick事件,如
<a href="javascript:void(0)" onclick="window.open()"></a>
//這樣用戶點擊這個超鏈接,瀏覽器會認為它是打開一個新的鏈接,所以就不會攔 截。

 

第二種:

setTimeout('window.open(url);', 500);
//使用 setTimeout 包裝一下,也可以防止被瀏覽器攔截。注意這里的超時時間不能太短,否則也會被攔截。

 

第三種:

//時候我們會遇到想要彈出一個窗口,可是卻是在onckick事件執行后,才去彈出來的,這時就會被瀏覽器攔截,我們可以通過下面的方法來避免,就是 先用window.open打開一個窗口,然后修改地址。如
var tempwindow=window.open('_blank');
//打開一個窗口,然后用tempwindow.location='http://www.baidu.com';使這個窗口跳轉到百度,這樣就會呈現彈出百度窗口的效果了。

 

但是這些方法多多少少有些不完美的地方,特別是在兼容IE瀏覽器方面,所以,最好是使用如下方法,親測有用~~

//寫法1
function openwin(url) {
    var a = document.createElement("a"); //創建a對象
    a.setAttribute("href", url);
    a.setAttribute("target", "_blank");
    a.setAttribute("id", "camnpr");
    document.body.appendChild(a);
    a.click(); //執行當前對象
}

//寫法2
function openUrl(url) {
    var a = $('<a href="'+url+'" target="_blank"></a>')[0];
    var e = document.createEvent('MouseEvents');
    e.initEvent('click', true, true);
    a.dispatchEvent(e);
}

//調用方法openwin(url) / openUrl(url)

//原理都是通過創建一個a標簽對象,通過里面自帶的target執行跳轉

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM