web组件如何判断 controller 已与 HarmonyOS 鸿蒙Next web 组件绑定

web组件如何判断 controller 已与 HarmonyOS 鸿蒙Next web 组件绑定

请问有没有相应的条件判断方法,判断 controller 已与 web 组件绑定了?类似如下:

if (controller绑定web组件) { this.webController.runJavaScript("") }

3 回复

onControllerAttached事件是Controller成功绑定到Web组件时触发该回调,所以用WebviewController执行方法的时候,建议在该事件中执行,参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-basic-components-web-V5#oncontrollerattached10,一般稳妥的办法是把调用的controller的方法放在web组件的生命周期中,这样能保证web组件绑定了controller 为了避免页面生命周期onPageShow回调函数中无法确认webveiwController与Web组件绑定时序关系。建议首次在Web组件onPageEnd回调函数中(此时webviewController已绑定)调用webveiwController.runJavaScript;当应用切换前后台时,在页面生命周期onPageShow回调函数中调用webveiwController.runJavaScript

如果web组件和controller已经解绑了,那么H5页面也没有了,js方法也不会执行了,理论上当前页面的web组件销毁了会走aboutToDisappear生命周期的

如果解绑了 这个时候应该做防崩溃 可以加个try catch预防下 然后想办法在页面销毁的时候 比如aboutToDisappear生命周期进行事件取消类似操作。

目前没有单独的api判断,只有通过报错的形式,这种形式其实也等于在提醒使用者,在调用WebController上的方法前 务必将Web组件和WebController绑定

更多关于web组件如何判断 controller 已与 HarmonyOS 鸿蒙Next web 组件绑定的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


用onControllerAttached事件判断

在HarmonyOS鸿蒙Next中,Web组件与Controller的绑定状态可以通过WebControllerisBound属性来判断。isBound是一个布尔值,当Web组件与Controller成功绑定时,该属性为true,否则为false

具体实现步骤如下:

  1. 创建WebController对象:

    let webController = new web.WebController();
    
  2. 绑定WebController到Web组件: 在Web组件的controller属性中传入webController对象,例如:

    Web({
      src: 'https://www.example.com',
      controller: webController
    })
    
  3. 判断绑定状态: 通过访问webController.isBound属性来判断绑定状态,例如:

    if (webController.isBound) {
      console.log('WebController已与Web组件绑定');
    } else {
      console.log('WebController未与Web组件绑定');
    }
    

通过以上步骤,可以在代码中实时判断WebController是否已与Web组件绑定。这种方法简单直接,适用于需要确认绑定状态的场景。

回到顶部