最近项目中做支付的时候碰到了一个问题:
在安卓上面可以拉起来支付,但是在苹果上面却无效;查了网上的一些资料才知道,Safari是会阻截window.open方法的,但是呢不会拦截 window.location.href = url ,但是由于我现在的场景比较特殊,无法使用一个URL去跳转,我需要的是打开一个我可以自定义的页面,嵌入自定义的内容,废话不多说,上代码
方案一:
let res = yield call(api.postorder, param);
document.write(`<div>${res.data.alipay_url}</div>`)
方案二:(有版本号限制)
<a onClick={this.handleClick} style={{display: 'block'}} >确定</a>
let ali = window.open('about:blank', '_blank');// 这一步必须放到请求接口之前
let res = yield call(api.postorder, param);// 这个是发起一个请求
ali?.document.write(`<div>${res.data.domurl}</div>`);// 这一步必须放到请求接口之后
res.data.domurl是后端返回的form表单标签和script标签,问题解决