taro+react+ts+tailwind开发微信小程序兼容h5——h5第三方页面跳转

1.跳转第三方页面方式

安卓通过连接打开第三方应用可以用window.open,ios只能用window.location

在 iOS 系统中,由于苹果的严格限制,应用程序通常无法直接退出应用,所以在h5中打开应用后无法再返回到原窗口页面

1.1 window.location

在当前窗口打开新页面

window.location.href 会生成一条历史记录

window.location.replace 不会生成一条历史记录

ios推荐用此方法

1.2 window.open(url, '_blank')

新开一个窗口打开此页面,无法回退

此方法在ios上用不了,Safari 或第三方浏览器可能会限制新标签页的打开,特别是当它们处于某些特定的模式(如无痕浏览模式)时

2.跳转后返回页面兼容处理

在跳转到第三方页面后再回来,可能会导致项目中某些组件库失效,这时需要window.location.reload()来强制刷新一下页面,在taro+react+ts开发过程中,我发现在我跳转到第三方页面像微信支付、人脸识别等页面后再回来,项目中有些Taro的方法会失效,需要在回到此页面时执行window.location.reload()来强制刷新一下页面,这样就没有问题了,这样会有一个新的问题就是window.location.reload()执行会再此触发页面加载的生命周期,所以在执行window.location.reload()操作时还需要加一个判断条件来控制,只有在第一次进来才触发,实现方法如下:

1.在跳转第三方页面前存个值来标记开启刷新

Taro.setStorageSync('PAY_RETURN_RELOAD', true)
        if (getDeviceOS() === 'Android') {
          window.open(payUrl, '_blank')
        } else {
          window.location.href = payUrl
        }

2.在页面加载生命周期执行,并且执行后关闭刷新状态

useDidShow(() => {
    if (Taro.getStorageSync('PAY_RETURN_RELOAD')) {
      Taro.setStorageSync('PAY_RETURN_RELOAD', false)
      window.location.reload()
    } 
})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值