HarmonyOS 鸿蒙Next WebView.onPageEnd 只触发一次的问题

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

HarmonyOS 鸿蒙Next WebView.onPageEnd 只触发一次的问题

加载一个 H5 链接,这个链接内部会触发重新加载等机制。在 Android 的 WebView 中,能够重复触发 WebViewClient#onPageFinished,但是在鸿蒙中 onPageEnd 只会在第一次加载完成后触发,后续触发重新加载等机制时,不会重新触发,这种问题要怎么解决呢

2 回复
Web组件的onPageEnd回调会在网页加载完成时触发,且只会在主frame(表示一个HTML元素,用于展示HTML页面的HTML元素)触发。

如果想要多次调用的方法操作,建议使用web组件的javaScriptProxy来进行与h5的交互。

参考链接:https://developer.huawei.com/consumer/cn/forum/topic/0202140957435962112?fid=0109140870620153026

当前WebView涉及到的声明周期函数包括:

加载阶段:

1、首先是page的aboutToAppear、onPageShow

2、然后调用组件的通用事件onAppear

3、接下来依次调用web组件独有的onUrlLoadIntercept、onInterceptRequest、onResourceLoad、onPageBegin。其中:

onUrlLoadIntercept、onInterceptRequest我们通常可以使用它们实现自定义拦截;

onResourceLoad主要用来通知Web所加载的资源文件url信息。然后onPageBegin调用后内核开始解析和加载H5页面。

4、H5阶段首先是Dom解析,然后开始加载Dom节点和资源,这里资源的加载会再次经过onInterceptRequest、onResourceLoad。

5、最后dom和资源都加载完毕后依次调用H5的onload和Web组件的onPageEnd方法

卸载阶段生命周期比较简单,首先调用页面onPageHide、aboutToDisAppear,然后是组件的通用卸载事件onDisAppear

建议参考使用WebCookieManager:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-webview-V5#webcookiemanager

试下onRefreshAccessedHistory:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-basic-components-web-V5#onrefreshaccessedhistory

加载网页页面完成时触发该回调,用于应用更新其访问的历史链接。

针对您提到的HarmonyOS鸿蒙系统中Next WebView组件的onPageEnd只触发一次的问题,这通常与WebView的加载机制及页面生命周期管理有关。在鸿蒙开发中,WebView的onPageEnd事件用于监听页面加载结束,但某些情况下(如页面内嵌的iframe加载、JavaScript重定向等),可能不会如预期多次触发。

首先,请确保您的WebView组件版本为最新,因为软件更新可能修复了此类问题。其次,检查您的页面内容,确认是否有动态加载的内容或脚本可能导致页面加载状态异常。此外,您可以尝试监听其他相关事件(如onPageStartedonLoadResource等)来辅助判断页面加载的实际状态。

如果问题依旧存在,建议深入检查WebView的加载逻辑,或尝试在加载前后添加日志打印,以追踪页面加载的完整过程。同时,确认是否有特定的页面或内容模式会导致此问题复现,这有助于定位问题根源。

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

回到顶部