jQuery强制弹出新窗口


关键词

jQuery 弹出新窗口 强制

摘要

本文介绍在Window.open弹出窗口被屏蔽之后,如何使用jquery来强制弹出新窗口。

目前情况下我们使用window.open自动弹出窗口都会给浏览器拦截掉了,但我们会发现有些网站还是可以弹出窗口了,这种是如何实现的呢?下面一起来看一下基于jquery的做法。

在很多网站中,会有弹出窗口,通常采用window.open的方式,但是这个方式一般被浏览器给禁止了。这也是好事。现在的浏览器:360、猎豹、搜狗等等都标明自己的安全性、智能性、屏蔽各种广告,给了用户很好的体验,但是可苦了我们这些站长们啊。有广告还不显示出来,如何过活啊?
 
言归正传,如何用jquery强制弹出新窗口?
 
今天分享一个办法。
 
直接上代码:
 
【代码】

//打开新链接方法实现
function windowOpen(url, target){
      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://www.splaybow.com/', '_blank');
  //当前窗口打开
windowOpen('http://www.splaybow.com/', '_self');
   
  
【思路】
 
其实做法很简单,首先模拟A标签点击打开新窗口,若失败再直接调用window.open方法。


【问题】
 
目前无法在异步的情况下调用该方法。如下:
 
代码如下
//以下做法将得不到期望的结果,会被浏览器阻止$.get("http://www.a.com/ajax",function(){
      windowOpen('http://www.splaybow.com/', '_blank');
  });

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

关于jQuery强制弹出新窗口,本文就介绍这么多,希望对您有所帮助,谢谢!

 

文章的版权

洪哥写文章很苦逼,如果本文对您略有帮助,点击感兴趣的广告支持洪哥!万分感谢!本文属于“洪哥笔记”原创文章,转载请注明来源地址:jQuery强制弹出新窗口:http://www.splaybow.com/post/jquery-force-new-window.html

关注与收藏

如果您在服务器运维、网络管理、网站或系统开发过程中有任何疑问,洪哥以此为饭碗,请加QQ:115085382!
了解更多好文章,请关注我们的新浪微博和腾讯微博
亲,先存起来,方便以后再看啊!加入收藏夹的话,按Ctrl+D


« JavaScript验证手机号码的函数 javascript格式化日期 »

相关文章:

HTML 表格  (2015/5/8 17:14:46)

HTML 链接  (2015/5/7 16:26:41)

HTML样式  (2015/5/1 22:54:11)

html代码如何使得背景图片自适应各类浏览器  (2015/4/27 13:31:06)

改变图像的尺寸  (2015/5/5 15:42:07)

DHTML实例  (2015/5/7 11:09:48)

表单的设计  (2015/5/6 10:35:14)

CSS中的边距  (2015/5/5 10:30:19)

HTML元素  (2015/4/29 21:52:57)

jQuery获取select选中的值  (2015/4/24 8:51:57)