现在位置首页 / 前端开发 /正文

jquery强制弹出新窗口--window.open

作者: IT小兵 | 2014年8月13日| 热度:℃ | 评论: |参与:

在很多网站中,都会有弹出窗口,通常采用window.open的方式,但是这个方式一般被浏览器给禁止了。

说明这也是好事。现在的浏览器:360 猎豹  搜狗 等等都标明自己的安全性、智能性、屏蔽各种广告,给了用户很好的体验,但是可苦了我们这些站长们啊。

有广告还不显示出来,如何过活啊?

言归正传。

如何用jquery强制弹出新窗口?

今天分享一个办法。

直接上代码:

//打开新链接方法实现
function windowOpen(){
    var a = document.createElement("a");
    a.setAttribute("href", url);
    if(target == null){
        target = '';
    }
    a.setAttribute("target", target);
    document.body.appendChild(a);
    if(a.click){
        a.click();
    }else{
        try{
            var evt = document.createEvent('Event');
            a.initEvent('click', true, true);
            a.dispatchEvent(evt);
        }catch(e){
            window.open(url);
        }
    }
    document.body.removeChild(a);
}
//新窗口打开
windowOpen('http://niu.xunlei.com/', '_blank');
//当前窗口打开 
windowOpen('http://niu.xunlei.com/', '_self');

思路

  其实做法很简单,首先模拟A标签点击打开新窗口,若失败再直接调用window.open方法。

问题

  目前无法在异步的情况下调用该方法。如下:

//以下做法将得不到期望的结果,会被浏览器阻止$.get("http://www.a.com/ajax",function(){
    windowOpen('http://niu.xunlei.com/', '_blank');
});

无法调用的原因是:浏览器中的javascript是单线程的。虽然$.get是ajax的一个方式,是异步的。但是这个异步只是一个模式,不是真正的浏览器异步线程。

具体请看:

[Javascript引擎单线程机制及setTimeout执行原理说明]

点击阅读本文所属分类的更多文章: 前端开发 。和高手一起交流:346717337
友荐云推荐

未注明转发、原文均为本站原创。分享本文请注明 原文链接

给您更多信息和帮助

在这里您可以找到更多:

技术交流群:346717337 Jquery插件交流

投稿:suchso@vip.qq.com

承接:企业网站门户/微网站/微商城/CMS系统/微信公众号运营/业务咨询

抢天猫双11红包
推荐使用阿里云服务器
echarts教程系列
本月最热文章

微信扫一扫,徜徉悠嘻网,您的休闲乐园

微信公众号:快乐每一天

随机文章
标签

技术交流群:346717337

投稿:suchso@vip.qq.com

专业专注:企业网站门户/微网站/微商城/CMS系统/微信公众号运营/付费问题咨询