window.open() 被拦截后的分析

1、用户点击事件内,触发打开一个新窗口

用户点击事件触发新窗口是例如:

obj.οnclick=function(){

window.open(url);

}

通过用户事件触发的新窗口打开,这种形式打开新窗口浏览器会认为是用户自己需要的,大多浏览器是不会拦截的

目前测试的几个用户事件,只有click和dbclick是浏览器不会拦截的

窗口拦截不只是跟浏览器内核有关,所以对原生IE和几个常见IE内核的浏览器都有做测试

事件:click,dbclick

不拦截的浏览器有:Chrome,FF,IE 6.0-10.0,Safari,Opera,360浏览器

拦截:搜狗浏览器

事件:mouseover,mousemove,mouseout,scroll等等

不拦截:无

拦截:Chrome,FF,IE 6.0-10.0,Safari,Opera,360浏览器

2、用户点击事件内,触发打开多个新窗口

点击一次成功打开多个窗口的浏览器:FF,360浏览器,Safari

点击一次打开第一个窗口,后面的窗口拦截的浏览器:Chrome,IE 6.0-10.0,Opera

3、Javascript自动触发打开窗口

如:

setTimeout(function(){ window.open('http://www.baidu.com')},1000)

或者ajax请求成功后执行

$obj.click(function(){

$.ajax({

sucss:function(data){

if(data){

 window.open('http://www.baidu.com')

}

}

})

})

拦截的浏览器:测试的几个浏览器都拦截

解决方案:

1、对于ajax返回后在打开新窗口,可以在用户点击后就打开一个空白窗口,然后再返回成功后给空白窗口一个url,这样就不会被拦截了

$obj.click(function(){

var newTab=window.open('about:blank');

$.ajax({

sucss:function(data){

if(data){

 //window.open('http://www.baidu.com');

newTab.location.href="http://www.baidu.com";

}

}

})

})

2、脚本自行触发打开的新窗口

看网上很多说新建a标签,模拟点击,经测试,无效,请大牛指导

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值