猿问

H5移动端页面在手机浏览器新开窗口被拦截

如题,调取支付宝支付链接时,H5移动端页面在手机浏览器新开窗口被拦截,

if (res.code === 1) {
    window.open(res.data.url)
}

url是要调起的支付宝支付链接,在PC端是可以正常新开窗口的,但在手机浏览器没有反应


翻翻过去那场雪
浏览 2613回答 2
2回答

慕工程0101907

某些浏览器在非用户主动触发打开新窗口是会进行拦截。比如你这种由程序自动执行而打开的新窗口,肯定会被拦截掉。可以将新窗口绑定到用户到操作中,比如click事件之中。你这个很明显是一个请求获取到结果之后打开。如果这个请求是由用户触发到,可在触发请求时打开窗口,在请求完成重置该窗口到URL为请求结果就OK了

心有法竹

先说为什么,因为以前有的流氓网页 在用户进去页面后弹出很多新窗口 影响用户体验,后来浏览器开发商为了避免这种情况就加了判断,如果不是由用户主动操作触发的,就会被浏览器拦截。允许将 open 放到定时器 但是不得超过1000ms 超过的也会被拦截。类似的还有比如 移动端的 媒体自动播放,在产生用户交互前,都是不能被调用 play 方法。可以先交由后台创建订单,创建成功后 返回url,然后在UI构建上 判断如果创建成功后 显示一个 modal 框。比如 “去支付” ,然后执行代码。
随时随地看视频慕课网APP

相关分类

Html5
我要回答