微信h5支付是在浏览器或者webview中打开一条腾讯财付通的链接,然后使用weixin://唤起微信客户端执行支付。
这条链接里面的js代码默认如下:
我们从源码可以看出来,微信使用了top.location.href = 'xxx',兼容了在iframe中唤醒微信支付的场景
但是最新的ios12.4,在webview中屏蔽了第三方的iframe操作顶层页面的权限,官方说是基于安全性考虑。
我们查看iframe的相关说明,我们发现可以使用sandbox这条属性。
具体使用如下:
const iframe = document.createElement( 'iframe' ) iframe.style.display = 'none' iframe.setAttribute( 'src' , url) iframe.setAttribute( 'sandbox' , 'allow-top-navigation allow-scripts' ) document.body.appendChild(iframe) |
亲测可用。
用了这个方案但是还是不行