首頁  >  文章  >  web前端  >  JS開啟新視窗防止被瀏覽器阻止的方法_javascript技巧

JS開啟新視窗防止被瀏覽器阻止的方法_javascript技巧

WBOY
WBOY原創
2016-05-16 16:22:281534瀏覽

本文實例講述了JS開啟新視窗防止被瀏覽器阻止的方法。分享給大家供大家參考。具體分析如下:

用傳統的window.open()方式開啟新窗口,會被瀏覽器阻止,那麼,我們如何才能讓JS開啟新視窗不被瀏覽器阻止呢?其實辦法還是有的,這裡我們就來分析一下如何解決這個問題

我最近也遇到了這樣的問題,所以就把彈出新視窗的方法分享給大家。歡迎大家補充...

第一種、使用原生javascript的window.open()方法(大部分情況下會被瀏覽自阻止)

第二種、模擬表單(form)提交,原理是指定表單的action為想要開啟的URL位址,target設定為"_blank"

複製程式碼


程式碼如下:
document.getElementById("msgTxt").innerHTML="";

var s=document.getElementById("hiddenlink");

s.submit();

不過模擬表單提交的方法經有可能也會被阻止...

第三種、類比超連結()被點選

當按下一個按鈕時,想開啟一個新的標籤頁,可以模擬連結被按下,然後開啟連結。
但在jQuery中,使用a.click(), a.trigger('click')等都不會造成連結預設事件被執行。

複製程式碼


程式碼如下:
var a = $("test").get(0);  var e = document.createEvent('MouseEvents');

 e.initEvent('click', true, true);
 a.dispatchEvent(e);

複製程式碼


程式碼如下:

clickOpenWin: function(f){
    var dataKey = "clickOpenWin.dataKey"
    var me = $(this);
    var A = me.data(dataKey);
    var returnData = null;
    if(!A){
        A = $("");
        me.data(dataKey, A);
        A.click(function(e){
            if(returnData){
                A.attr("href", returnData);
            }else {
                A.before(me);
                e.stop();
            }
        });
    }
    me.mouseover(function(){$(this).before(A).appendTo(A);});
    me.mouseout(function(){A.before($(this));});
    me.click(function(){
        A.attr("href", "#|");         returnData = f.apply(this, arguments);

    });

複製程式碼
程式碼如下:returnData = f.apply(this, arguments);
2). 然後就要說到彈窗攔截的策略了,具體我就不說了,反正 策略裡是不會攔截 “A” 本身吧
3). 最後就是合成了,用A包含後,因為事件會冒泡,所以利用正常的點擊,生成動態的 鏈接地址 給A,觸發A的原始點擊事件,就完成了。

希望本文所述對大家的javascript程式設計有所幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn