jq打开浏览器新窗口_jquery强制弹出新窗口window.open

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

在很多网站中,会有弹出窗口,通常采用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://www.45it.net/', '_blank');

//当前窗口打开

windowOpen('http://www.45it.net/', '_self');

思路

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

问题

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

代码如下

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

windowOpen('http://www.45it.net/', '_blank');

});

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值