资讯专栏INFORMATION COLUMN

window.open跳转被拦截问题处理

Yi_Zhi_Yu / 2780人阅读

摘要:目前就不能避免被拦截了,只能通知用户,让用户去给被拦截的页面新添加信任。判断跳转页面是否被拦截了。如果已经拦截,就给他用户提示提示的方式可以是引导用户去解决被拦截问题添加信任您的支付界面窗口已经被浏览器拦截

知识简说

window.open 命令在用户操作(trusted events)时, 才会正常的打开应该页面而不会被浏览器拦截

ps : 什么是 trusted events

trusted events is evnet.isTrusted is true. The isTrusted read-only property of the Event interface is a boolean that is true when the event was generated by a user action, and false when the event was created or modified by a script or dispatched via dispatchEvent.

阐述问题

很多时候,我们是需要在做异步请求回来时才能跳转,这时,如果等待到请求返回再去window.open 会被浏览器拦截。

解决方案

场景1,如果是在发送请求后等待请求回来,不管请求结果正确与否都要跳转页面的话

需要在发送请求前先var A = window.open() 一个新窗口。然后等请求结束了,在给这个窗口附上URL

    function clickAction() {
        var openWind = window.open()
        ajaxAgent("POST", "URL", params).then((resutl)=> {
            opneWind.loaction.href = "jumpURL"
        })
    }

 
- "注意" 这里会有个问题,如果异步请求的时间过长,会让用户感觉有个空白窗口在哪里晾着O__O …。

场景2,如果是想发送请求后等待请求回来,通过请求结果来决定是否要跳转,这时,就没发通过执行异步请求之前先打开个新窗口的方法来解决了,因为有可能会放回结构是失败,不希望跳转,这时,在去吧空窗口关闭,会给用户带来困惑。

目前就不能避免被拦截了,只能通知用户,让用户去给被拦截的页面新添加信任。

 

       var openNewWindow = window.open(url);
        // 判断跳转页面是否被拦截了。
        // 如果已经拦截,就给他用户提示
        // 提示的方式可以是引导用户去解决被拦截问题(添加信任)
        if (!openNewWindow || openNewWindow.closed || typeof openNewWindow.closed === "undefined") {
            alert("您的支付界面窗口已经被浏览器拦截")
        }

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

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

相关文章

  • window.open转被拦截问题处理

    摘要:目前就不能避免被拦截了,只能通知用户,让用户去给被拦截的页面新添加信任。判断跳转页面是否被拦截了。如果已经拦截,就给他用户提示提示的方式可以是引导用户去解决被拦截问题添加信任您的支付界面窗口已经被浏览器拦截 知识简说 window.open 命令在用户操作(trusted events)时, 才会正常的打开应该页面而不会被浏览器拦截 ps : 什么是 trusted events tr...

    xfee 评论0 收藏0
  • 使用window.open打开新窗口被浏览器拦截的解决方案

    摘要:问题描述代码中直接使用会被浏览器窗口拦截原因浏览器为了维护用户安全和体验,在中直接使用,来打开新的链接是会被拦截的。 问题描述: 代码中直接使用window.open(//www.baidu.com, _blank);会被浏览器窗口拦截 原因浏览器为了维护用户安全和体验,在JS中直接使用window.open(url,_blank)来打开新的链接是会被拦截的。通常项目需要在ajax异步...

    jemygraw 评论0 收藏0
  • 使用window.open打开新窗口被浏览器拦截的解决方案

    摘要:问题描述代码中直接使用会被浏览器窗口拦截原因浏览器为了维护用户安全和体验,在中直接使用,来打开新的链接是会被拦截的。 问题描述: 代码中直接使用window.open(//www.baidu.com, _blank);会被浏览器窗口拦截 原因浏览器为了维护用户安全和体验,在JS中直接使用window.open(url,_blank)来打开新的链接是会被拦截的。通常项目需要在ajax异步...

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

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

    JeOam 评论0 收藏0

发表评论

0条评论

Yi_Zhi_Yu

|高级讲师

TA的文章

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