HarmonyOS 鸿蒙Next WebView的js方法在什么时机注册

HarmonyOS 鸿蒙Next WebView的js方法在什么时机注册 我们的h5页面,有和原生交互的地方,但是什么时候来注册(registerJavaScriptProxy)这些原生的方法呢? 如果我写在onPageShow()里面太早,现在只能起一个定时器来延迟注册,但是定时器取多长,感觉都不合适 一个h5页面,并且有和原生的交互 想要确认registerJavaScriptProxy什么时候来执行?

2 回复

registerJavaScriptProxy可以在Web组件初始化完成后调用,下述便是相应方案:

  1. 如果放在onPageShow太早,web组件本身有onPageBegin和onPageEnd生命周期函数:
Web({
    src: $rawfile('test.html'),
    controller: this.webviewController
}).onPageEnd(() => {
    try {
        this.webviewController.registerJavaScriptProxy(this.testObj, "testObjName", ["test", "toString"]);
    } catch (error) {
        let e: business_error.BusinessError = error as business_error.BusinessError;
        console.error(ErrorCode: ${e.code}, Message: ${e.message});
    }
})
  1. 也可以把registerJavaScriptProxy的使用放在onControllerAttached这个生命周期中,放在该生命周期里不需要refresh即可生效,请参考链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-basic-components-web-V5

更多关于HarmonyOS 鸿蒙Next WebView的js方法在什么时机注册的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS(鸿蒙)系统中,Next WebView组件的JS方法注册时机通常与WebView的加载和初始化过程紧密相关。具体来说,注册JS方法应在WebView组件完成加载并准备接收和执行JavaScript代码时进行。

一般情况下,你可以按照以下步骤来注册JS方法:

  1. 初始化WebView:首先,确保WebView组件已被正确初始化并添加到界面中。

  2. 设置WebViewClient:通过WebView的setWebViewClient方法设置一个WebViewClient,以便监听WebView的加载状态。

  3. 页面加载完成:在WebViewClient的onPageFinished回调方法中,判断页面是否已完全加载。这是注册JS方法的最佳时机,因为此时WebView已经准备好执行JavaScript代码。

  4. 注册JS方法:使用WebView提供的接口(如addJavascriptInterface),将需要暴露给JavaScript环境的方法注册到WebView中。这样,JavaScript代码就可以通过特定的接口名调用这些方法。

请注意,注册JS方法的时机非常关键,过早或过晚都可能导致方法无法被正确识别或执行。

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

回到顶部