微信h5支付使用iframe唤起原生微信支付的方法
微信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)[代码]亲测可用。