HarmonyOS 鸿蒙Next Web组件内跳转新页面并回退后页面重新加载

发布于 1周前 作者 songsunli 来自 鸿蒙OS

HarmonyOS 鸿蒙Next Web组件内跳转新页面并回退后页面重新加载

用Web组件加载一个页面,在该页面进行一些操作后,在该页面中点击链接跳转到新页面,在新页面用手势或按钮回退到原页面,发现原页面重新加载了,没有保留原本的操作
要如何设置使从新页面回退到原页面时原页面不会重新加载?

7 回复
this.controller.refresh()

这个h5页面是自己的可以修改代码的吗?如果可以,那么可以利用registerJavaScriptProxy注册jsbridge,h5跳转的事件改成通知鸿蒙Web组件,鸿蒙Web组件收到通知后手动打开新的page加载新的web。

可以改代码。手动打开新的page页面指的是什么呢,用controller.loadUrl加载url还是用路由跳转新建一个web组件?

对,打开新的有web的组件,我这边现在就是这么做的。 router.pushUrl({ url: ‘pages/Web’, params: { launchWebview: url } }, router.RouterMode.Standard)

HarmonyOS的分布式技术让我实现了跨设备的无缝协作,工作效率翻倍。

这种是可以实现,也不需要JSBridge,在加载url的时候拦截一下跳新页面就行;但是问题是web只是一个组件,都是包在业务的容器里使用的,每个业务都有自己的容器,这样在点击url时不知道要跳到哪个容器,要用这种方式改造会很大且麻烦,不知道有没有更方便的方案,就在原容器里就能实现

在HarmonyOS鸿蒙Next中,Web组件内跳转新页面并回退后页面重新加载的问题,通常是由于页面跳转逻辑未正确处理浏览历史记录导致的。

要解决这个问题,可以考虑以下方法:

  1. 使用router.pushUrl()进行页面跳转:在Web组件中,使用router.pushUrl()方法跳转到新页面时,新页面会被压入页面栈中,而不会替换当前页面。这样,当用户回退时,可以返回到原页面且原页面状态得以保留。
  2. 拦截URL加载:在Web组件中,可以通过监听URL加载事件并拦截特定格式的URL来实现自定义页面跳转逻辑。例如,可以拦截以“native://”开头的URL,并通过Router模块跳转到应用内的指定页面。
  3. 确保页面状态管理:在Web组件中,应确保页面状态得到妥善管理。可以使用组件的状态管理机制(如React的状态钩子或Vue的响应式数据)来保存和恢复页面状态。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部