一聚教程网:一个值得你收藏的教程网站

热门教程

jquery强制弹出新窗口window.open

时间:2022-11-14 22:03:11 编辑:袖梨 来源:一聚教程网

在很多网站中,会有弹出窗口,通常采用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.111com.net/', '_blank');
//当前窗口打开
windowOpen('http://www.111com.net/', '_self');

思路

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

问题

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

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

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

热门栏目