怎么打开关闭拦截入口:
https://jingyan.baidu.com/article/466506580d9828f549e5f8d1.html
也可以设置有些网站拦截,部分网站不拦截
为什么会出现这种情况:
当浏览器检测到非用户操作产生的新弹出窗口,则会对其进行阻止。因为浏览器认为这可能是一个广告,不是一个用户希望看到的页面。
而非用户操作最常见的case就是异步调用(事件,请求,setTimeout等)
谷歌+百度到的各种解决方案:
方案一:
let newwindow = window.open('_blank');
newwindow.location = url;
中间有空白页,需要额外解决。
方案2:a标签,form表单
方案3:利用ajax,设置异步请求变成同步请求,即async:false
试了上面几个,都没有好的解决方案。
最终解决方案:
采用参考链接解决了方案:
window.open('_blank')要在异步调用之前,然后拿返回的window对象去w去w.location.href
这样虽然解决了问题,但是和产品的初始需求有出入,产品的需求是在请求成功才打开跳转淘宝页面,但是我在未请求成功的时候(点击的时候就先打开了一个空白页面)
屁颠屁颠去找产品协商~~
参考链接:https://www.weipxiu.com/1193.html
扩展:
之前也遇到过一个需要模拟点击的情况,当时加了这句话,这句话时为了取消离开当前页面时候的提示语:
模拟a和form标签 取消$(window).off('beforeunload');事件绑定