一般我們在打開頁面的時候, 最常用的就是用<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執行跳轉