`

window.open和trigger会被浏览器拦截的问题

阅读更多
今天希望做一个效果,即触发某个事件(不一定是点击事件)的同时,打开一个页面。

1. 开始以为很简单:
window.open('http://www.xxxx.com');


2. 后来发现当在window.open被ajax包裹时,被打开的页面会被部分浏览器拦截,如:
$.post(url, data).then(function(data){
    window.open('http://www.xxxx.com');
});


3. 想到通过触发某个a标签来实现。
html代码:
<a id="id_link" href="http://www.xxxx.com"></a>

js代码:
$.post(url, data).then(function(data){
    $('#id_link').trigger('click');
});


4. 引出了新的问题,a标签没有被点开,几番查找后,修改html和js代码。
html代码:
<a id="id_link" href="http://www.xxxx.com"><span id="id_span"></span></a>

js代码:
$.post(url, data).then(function(data){
    $('#id_span').trigger('click');
});


5. 根据以上代码,a标签是被打开了,可是页面还是被浏览器拦截,于是结合2和4。
html代码:
<a id="id_link" href="###"><span id="id_span"></span></a>

js代码:
$('#id_link').click(function(){
    window.open('http://www.xxxx.com');
})
$.post(url, data).then(function(data){
    $('#id_span').trigger('click');
});


竟然好用了……,浏览器为什么允许这种行为,倒是个新的问题。

话说今天表现的像个菜鸟一样,不过想想,我的确就是个菜鸟,于是风高云淡了。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics