您的位置:首页 > 运维架构

window.open()被浏览器拦截的问题

2013-12-07 23:15 330 查看

window.open()被浏览器拦截的问题

最近用window.open()的时候,常常会被浏览器拦截,需设置为“始终允许显示”才能打开页面(如果是chrome,则会生成一个弹窗显示页面,且也会被拦截)。

百思不得其解,后在网上找了很久资料才搞清楚,是浏览器的广告拦截功能在作祟:

1、 一般情况下,如果在js中调用window.open()函数去打开一个新tab页,浏览器会进行拦截,认为打开的是一个广告页。

2、 所以如果不想让浏览器拦截,可以将这个函数改为用户点击时触发,这样浏览器就认为是用户想访问这个页面,而不是你直接弹出给用户。

3、 即使是用户点击事件,如果在一次事件里调用多次window.open()函数,则只有第一次被当作正常打开,之后的还是会被当作广告页。

4、 如果在点击事件里有ajax调用,window.open()在回调函数里执行,则浏览器仍然认为是js调用并当作广告拦截。除非ajax设置为同步模式。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: