资讯专栏INFORMATION COLUMN

如何解决浏览器弹出窗口的拦截

AndroidTraveler / 1867人阅读

摘要:直接在代码中执行是会被浏览器拦截的,浏览器是默认屏蔽弹出窗口,但是是用户手动触发,就不会拦截,如果是程序自动执行,则会拦截。

问题

有时候在开发业务时,由于产品体验,要求自动打开新窗口,而不希望用户手动点击。
直接在代码中执行:

window.open("http://www.baidu.com")

是会被浏览器拦截的,浏览器是默认屏蔽弹出窗口,但是是用户手动触发,就不会拦截,如果是程序自动执行,则会拦截。

解决

那么根据上述规则,那就在用户有点击动作时打开这个窗口,伪代码如下:

 test
 document.getElementById("blank").onclick=function(){
    window.open(...)
 }

示例在此

不过,这方式在异步编程中还是会被拦截,所以在用户点击发送请求的同时打开一个新窗口,然后在回调函数中修改新窗口的地址,伪代码如下:

 test
 document.getElementById("blank").onclick=function(){
    const newwin = window.open("about:blank");
    $.ajax({
       type: "post",
       url: "xxxx",
       data: {...},
    }).then((data)=>{
      ...
      newwin.location.href = data.href; // 调用location
    })

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/83449.html

相关文章

  • window.open被览器拦截解决方案

    摘要:原因分析深入研究当浏览器检测到非用户操作产生的新弹出窗口,则会对其进行阻止。但是,被浏览器拦截我们代码中要弹出的窗口并不是程序员所希望的。 现象 最近在做项目的时候碰到了使用window.open被浏览器拦截的情况,搞得人无比郁闷啊,虽然在自己的环境可以对页面进行放行,但是对用户来说,不能要求用户都来通过拦截。何况当出现拦截时,很多小白根本不知道发生了啥,不知道在哪里看被拦截的页面,简...

    rickchen 评论0 收藏0
  • window.open 打开新窗口拦截解决方案

    摘要:使用包装一下,也可以防止被浏览器拦截。注意这里的超时时间不能太短,否则也会被拦截。我们会遇到想要弹出一个窗口,可是却是在事件执行后,才去弹出来的,这时就会被浏览器拦截,我们可以通过下面的方法来避免先用打开一个窗口,然后修改地址。 最近公司开发的一个项目,平凡用到下载各种类型的文件,但是例如.txt,.jpg,.pdf格式的文件呢浏览器会在当前窗口直接打开,影响用户体验,尝试各种方案和百...

    JeOam 评论0 收藏0
  • window.open 打开新窗口拦截解决方案

    摘要:使用包装一下,也可以防止被浏览器拦截。注意这里的超时时间不能太短,否则也会被拦截。我们会遇到想要弹出一个窗口,可是却是在事件执行后,才去弹出来的,这时就会被浏览器拦截,我们可以通过下面的方法来避免先用打开一个窗口,然后修改地址。 最近公司开发的一个项目,平凡用到下载各种类型的文件,但是例如.txt,.jpg,.pdf格式的文件呢浏览器会在当前窗口直接打开,影响用户体验,尝试各种方案和百...

    Ajian 评论0 收藏0
  • window.open 打开新窗口拦截解决方案

    摘要:使用包装一下,也可以防止被浏览器拦截。注意这里的超时时间不能太短,否则也会被拦截。我们会遇到想要弹出一个窗口,可是却是在事件执行后,才去弹出来的,这时就会被浏览器拦截,我们可以通过下面的方法来避免先用打开一个窗口,然后修改地址。 最近公司开发的一个项目,平凡用到下载各种类型的文件,但是例如.txt,.jpg,.pdf格式的文件呢浏览器会在当前窗口直接打开,影响用户体验,尝试各种方案和百...

    Object 评论0 收藏0

发表评论

0条评论

AndroidTraveler

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<