HarmonyOS Error: Init error. The WebviewController must be associated with a Web component?

我想在onPageShow里建立消息通道,然后有如下代码:

onPageShow(): void {
  // this.subscribePhoto()
  this.setWebMessgePort()
}
setWebMessgePort() {
  try {
    this.ports = this.controller.createWebMessagePorts();
    this.ports[1].onMessageEvent((result: webview.WebMessage) => {

    })
    this.controller.postMessage("__init_port__", [this.ports[0]], '*')
  } catch (error) {
    console.log("发送消息有报错吗??", error)
  }
}

然后报错Error: Init error. The WebviewController must be associated with a Web component,是不能在生命周期里调这个吗?

阅读 544
1 个回答

The WebviewController must be associated with a Web component错误是WebviewController没有和具体的Web组件关联,即Web组件和WebviewController还没有绑定

1、WebviewController可以控制Web组件各种行为。一个WebviewController对象只能控制一个Web组件,且必须在Web组件和WebviewController绑定后,才能调用WebviewController上的方法(静态方法除外)。参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-webview-V5\#webviewcontroller

2、onControllerAttached:当Controller成功绑定到Web组件时触发该回调,最早可以在onControllerAttached回调中使用WebviewController相关方法。参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-basic-components-web-V5\#oncontrollerattached10

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
logo
HarmonyOS
子站问答
访问
宣传栏