最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JS打開新窗口防止被瀏覽器阻止的方法

 更新時間:2015年01月03日 10:51:14   投稿:shichen2014  
這篇文章主要介紹了JS打開新窗口防止被瀏覽器阻止的方法,分析對比了常用方法與改進(jìn)方法,是非常實(shí)用的技巧,需要的朋友可以參考下

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

用傳統(tǒng)的window.open()方式打開新窗口,會被瀏覽器阻止,那么,我們?nèi)绾尾拍茏孞S打開新窗口不被瀏覽器阻止呢?其實(shí)辦法還是有的,這里我們就來分析一下如何解決這個問題

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

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

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

復(fù)制代碼 代碼如下:
document.getElementById("msgTxt").innerHTML="<form id='hiddenlink' action='"+sHref+"' target='_blank'><input type='hidden' name='object'   value='"+objValue+"'></form>";
var s=document.getElementById("hiddenlink");
s.submit();

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

第三種、模擬超鏈接(<a>)被點(diǎn)擊

當(dāng)按下一個按鈕時,想打開一個新的標(biāo)簽頁,可以模擬鏈接被按下,然后打開鏈接。
但是在jQuery中,使用a.click(), a.trigger('click')等都不會引起鏈接默認(rèn)事件被執(zhí)行。
下面的代碼模擬生成了鏈接點(diǎn)擊事件,然后執(zhí)行默認(rèn)打開鏈接的事件。

不過值得注意的一點(diǎn)是:對應(yīng)IE瀏覽器,只有IE9以上才支持document.createEvent函數(shù),所以以下代碼在IE執(zhí)行的話要IE9以上才行

復(fù)制代碼 代碼如下:
var a = $("<a target='_blank' >test</a>").get(0);
 var e = document.createEvent('MouseEvents');
 e.initEvent('click', true, true);
 a.dispatchEvent(e);


第四種、利用瀏覽器的冒泡事件(轉(zhuǎn)載來的)

復(fù)制代碼 代碼如下:
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);
    });
}

1). 首先,說一下最終的效果,是實(shí)現(xiàn)用 “A” 包含你要觸發(fā)彈窗的元素,原來的click事件要返回彈窗的URL 對應(yīng)這一句:

復(fù)制代碼 代碼如下:
returnData = f.apply(this, arguments);

2). 然后就要說到彈窗攔截的策略了,具體我就不說了,反正 策略里是不會攔截 “A” 本身吧
3). 最后就是合成了,用A包含后,因?yàn)槭录芭荩岳谜5狞c(diǎn)擊,生成動態(tài)的 鏈接地址 給A,觸發(fā)A的原始點(diǎn)擊事件,就完成了。

希望本文所述對大家的javascript程序設(shè)計(jì)有所幫助。

相關(guān)文章

最新評論

方山县| 建始县| 五大连池市| 射洪县| 定襄县| 清河县| 阿克苏市| 陇西县| 闸北区| 留坝县| 定兴县| 沅陵县| 沅陵县| 扶绥县| 长阳| 枣阳市| 浑源县| 南华县| 呼玛县| 德庆县| 镇安县| 务川| 馆陶县| 黄梅县| 钦州市| 宜城市| 乌兰浩特市| 镇安县| 溧阳市| 杂多县| 大埔区| 双鸭山市| 砚山县| 株洲县| 香格里拉县| 孝昌县| 黄龙县| 门头沟区| 白玉县| 海宁市| 贡嘎县|