美文网首页
[工作中遇到的难点] window.open(url)打开链接被

[工作中遇到的难点] window.open(url)打开链接被

作者: 向布谷鸟说早安 | 来源:发表于2019-01-07 14:53 被阅读12次

怎么打开关闭拦截入口:

https://jingyan.baidu.com/article/466506580d9828f549e5f8d1.html
也可以设置有些网站拦截,部分网站不拦截

preventSetup.png

为什么会出现这种情况:

当浏览器检测到非用户操作产生的新弹出窗口,则会对其进行阻止。因为浏览器认为这可能是一个广告,不是一个用户希望看到的页面。
而非用户操作最常见的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');事件绑定

相关文章

网友评论

      本文标题:[工作中遇到的难点] window.open(url)打开链接被

      本文链接:https://www.haomeiwen.com/subject/djsurqtx.html