如题,调取支付宝支付链接时,H5移动端页面在手机浏览器新开窗口被拦截,if(res.code===1){window.open(res.data.url)}url是要调起的支付宝支付链接,在PC端是可以正常新开窗口的,但在手机浏览器没有反应
2 回答
DIEA
TA贡献1820条经验 获得超2个赞
某些浏览器在非用户主动触发打开新窗口是会进行拦截。比如你这种由程序自动执行而打开的新窗口,肯定会被拦截掉。可以将新窗口绑定到用户到操作中,比如click事件之中。你这个很明显是一个请求获取到结果之后打开。如果这个请求是由用户触发到,可在触发请求时打开窗口,在请求完成重置该窗口到URL为请求结果就OK了
慕勒3428872
TA贡献1848条经验 获得超6个赞
先说为什么,因为以前有的流氓网页在用户进去页面后弹出很多新窗口影响用户体验,后来浏览器开发商为了避免这种情况就加了判断,如果不是由用户主动操作触发的,就会被浏览器拦截。允许将open放到定时器但是不得超过1000ms超过的也会被拦截。类似的还有比如移动端的媒体自动播放,在产生用户交互前,都是不能被调用play方法。可以先交由后台创建订单,创建成功后返回url,然后在UI构建上判断如果创建成功后显示一个modal框。比如“去支付”,然后执行代码。
添加回答
举报
0/150
提交
取消