微信小程序-ios环境下webview打开的h5页面replace跳转方式不生效问题

如题:

我的webview页面打开的h5页面是一个中间页,中间页进行一系列判断逻辑后,会跳转最终的目标页。

但是这个中间页的逻辑只能执行一次,我不希望用户点击返回上一页时再回到这个页面。

因此,我使用 location.replace(url) 方式跳转页面。

但是在 ios 环境,我发现 location.replace() 跳转后的表现跟location.href 一样,在返回上一页时,仍然回到了这个中间页。

导致页面逻辑再次执行,发生错误。

解决方案:

使用 history.replaceState(newState, '', newUrl) + location.reload 替代 location.replace,重新封装一个replace方法。

javascript 复制代码
function locationReplaceUrl(url) {
	// 判断是否为iOS环境
  	const isIOS = /(iPhone|iPad|iPod)/i.test(navigator.userAgent) && !window.MSStream; // 排除IE/Edge
  	if(isIOS) {
  		try {
			// 替换当前历史记录条目,url可以是相对路径或绝对路径
    		history.replaceState(null, '', url);
    		location.reload();
		} catch (err) {
			location.replace(url);
		}
	}else {
		location.replace(url);
	}
}
相关推荐
www_aiyuanma_vip4 小时前
信息安全小卫士
小程序
_瑞8 小时前
APM_OOMDetector
ios
秋雨梧桐叶落莳8 小时前
【iOS】从源码深入理解RunLoop机制
macos·ios·objective-c·cocoa·cocoapods·uikit
www_aiyuanma_vip8 小时前
家乡介绍小程序
小程序·notepad++
www_aiyuanma_vip9 小时前
信息安全小卫士(深色系版本)
小程序
烂蜻蜓9 小时前
Flask入门教程(二十七):Session Interface API——自定义Session存储后端
网络·ios·flask
用户380341658829710 小时前
VideoToolbox 硬编解码的十个坑:为什么它几乎从不报错
ios
bcbnb10 小时前
Flutter-Notebook代码混淆:Android与iOS平台安全配置
后端·ios
博、、11 小时前
智慧场馆小程序系统实战指南:从架构设计到落地部署
小程序
冠品科技-小程序开发11 小时前
做实体的,盲盒玩法别只停留在线下
小程序·软件构建·个人开发·软件需求