HarmonyOS 鸿蒙Next WebView.onPageEnd 只触发一次的问题
HarmonyOS 鸿蒙Next WebView.onPageEnd 只触发一次的问题
如果想要多次调用的方法操作,建议使用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组件版本为最新,因为软件更新可能修复了此类问题。其次,检查您的页面内容,确认是否有动态加载的内容或脚本可能导致页面加载状态异常。此外,您可以尝试监听其他相关事件(如onPageStarted
、onLoadResource
等)来辅助判断页面加载的实际状态。
如果问题依旧存在,建议深入检查WebView的加载逻辑,或尝试在加载前后添加日志打印,以追踪页面加载的完整过程。同时,确认是否有特定的页面或内容模式会导致此问题复现,这有助于定位问题根源。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html