window.open打开新窗口被浏览器拦截的处理方法
生活随笔
收集整理的這篇文章主要介紹了
window.open打开新窗口被浏览器拦截的处理方法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一般我們在打開頁面的時候, 最常用的就是用<a>標簽,如果是新窗口打開就價格target="_blank"屬性就可以了, 如果只是刷新當前頁面就用window.location.reload(), 在某些特殊情況下也要用到另外一種新窗口打開的方法,就是window.open(),這個方法有一個問題就是會被基本所有的瀏覽器所攔截,要收到點擊確認打開才可以,這樣的體驗可以說是非常不友好的~~ 感覺像一個有病毒的程序~~
?
所以我們如果一定要用這個方法,但是又不想其被瀏覽器攔截, 有幾種方法,都可以解決,具體如何~~
第一種:
//所以常用的方法就是在超鏈接里加入onclick事件,如 <a href="javascript:void(0)" οnclick="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執行跳轉? ?如果以上方法還是不行,就得檢查你是不是在異步方法里面用了上面的的代碼,js在異步方法里面用open打開新頁面也會被瀏覽器攔截,
? ?所以將其寫的同步方法中就可以正常了,如:用到http請求,你可以使用同步方法,異步改同步
$.ajax( type:”“, data:{}, async:false, //異步為true,同步為falsesuccess: function(response){});
轉載于:https://www.cnblogs.com/flxy-1028/p/8401130.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的window.open打开新窗口被浏览器拦截的处理方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jdk17稳定版来了,jdk8还能香多久
- 下一篇: 中科大EPC课程查询自动选课