window.open()被拦截问题

Posted 一线蓝光

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了window.open()被拦截问题相关的知识,希望对你有一定的参考价值。

    最近做项目的时候遇到一个需求,在商品详情页面中点击购买按钮,之后再新标签页中打开生成的订单页面,所以想用window.open()来实现。但是测试的时候发现打开的链接被浏览器拦截。

    之后,开始在网上查找解决方案,看到最常用的一个是新建一个a标签,模拟点击测试,多次测试后发现并没有用。然后又尝试了几个其他常见的方法,还是都会被拦截。

    然后,发现window.open()拦截是有条件的。一般通过用户的点击事件触发的在新标签页中打开链接,浏览器是不会拦截的,因为这种形式打开新窗口浏览器会认为是用户自己需要的。

    在我的项目中,是需要在ajax异步请求成功后需要在新窗口中打开返回的url地址,使用window.open()会被拦截,因为这种情况下浏览器认为该操作不是用户主动触发的,所以会拦截。

    解决办法:

      ajax请求由异步改为同步。(async:false)   (测试有效)。

以上是关于window.open()被拦截问题的主要内容,如果未能解决你的问题,请参考以下文章

window.open()被拦截问题

关于window.open()被拦截

JS window.open()拦截问题解决方案

window.open()打开新窗口被拦截

window.open(url)新窗口打开链接被浏览器拦截解决方案

window.open打开网址被拦截