您好,欢迎访问一九零五行业门户网

JS打开新窗口防止被浏览器阻止的方法_javascript技巧

本文实例讲述了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')等都不会引起链接默认事件被执行。
下面的代码模拟生成了链接点击事件,然后执行默认打开链接的事件。
不过值得注意的一点是:对应ie浏览器,只有ie9以上才支持document.createevent函数,所以以下代码在ie执行的话要ie9以上才行
复制代码 代码如下:
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);
    });
}
1). 首先,说一下最终的效果,是实现用 “a” 包含你要触发弹窗的元素,原来的click事件要返回弹窗的url 对应这一句:
复制代码 代码如下:
returndata = f.apply(this, arguments);
2). 然后就要说到弹窗拦截的策略了,具体我就不说了,反正 策略里是不会拦截 “a” 本身吧
3). 最后就是合成了,用a包含后,因为事件会冒泡,所以利用正常的点击,生成动态的 链接地址 给a,触发a的原始点击事件,就完成了。希望本文所述对大家的javascript程序设计有所帮助。
其它类似信息

推荐信息