uniapp的H5在ReactNative的WebView上导航栏返回按钮冲突

uniapp的H5在ReactNative的WebView上导航栏返回按钮冲突,第1张

一 场景描述:

uinapp的h5在安卓手机上返回是正常的,但是到了ios上就无法正常返回,例如第三页无法返回第二页,而是直接返回到第一页APP里。ios上是用ReactNative的WebView渲染的h5页面,之前渲染jquery的h5没有问题,也就是a标签超链接跳转或window.location.href跳转没问题。初步判断是因为vue单页面问题,路由用的hash,只在一个页面更换DOM,所以没有历史记录造成的

二 方案分析

1.看到uniAPP官方的两句话很激动,以为可以用这个

webview 中嵌入 uni-app H5时,使用 uni.webView.navigateTo... 跳转页面

web-view 加载 uni-app H5,内部跳转冲突如何解决 A:使用 uni.webView.navigateTo...

后来发现这种得是uniapp的h5运行在uniapp渲染的web-view场景下,显然不行

2.后来发现uniapp里有个生命周期onBackPress可以监听页面返回,但试了也不行,觉得应该是得用uniapp自定义的导航栏才生效,别的不行

3.后来看到如下文章才有所启发,既然单页面没有历史记录,那就创造历史记录
uniapp系统返回监听_沐卿゚的博客-CSDN博客_uniapp监听返回uniapp系统返回监听https://blog.csdn.net/Leijiang0504/article/details/122879167

三 解决方法

第二页跳转的时候必须用navigateTo(其它试过不行),在成功回调后插入历史,然后跳转下页前用location.reload()刷新当页(不刷新插历史无效)

​
uni.navigateTo({
	url: '/pages/3',
	success() {
		if (window.history && window.history.pushState) {
			 history.pushState(null, null, document.URL);
		}
		location.reload()
	}
})

​

 在第三页onLoad时添加退栈事件监听,用uni.navigateBack()返回(其它无效如history.back)

window.addEventListener("popstate", this.show, false);
uni.navigateBack()
window.removeEventListener("popstate", this.show, false);

如果有第四页第五页的话,都按第三页来写

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/942051.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-17
下一篇 2022-05-17

发表评论

登录后才能评论

评论列表(0条)

保存