HarmonyOS Web组件前端页面调用应用侧函数,在页面关闭后再次打开无法触发的问题?

@Entry
@Component
export default struct WebView {
  controller: web_webview.WebviewController = new web_webview.WebviewController()
  @State url: string = ''

  build() {
    Column() {
      Web({ src: this.url, controller: this.controller })
        .javaScriptProxy({
          object: this.jsHandler,
          name: "testObjName",
          methodList: ["test"],
          controller: this.controller
        })
    }
    .width('100%')
    .height('100%')
  }
}

上面的代码中通过javaScriptProxy方式注入后,该函数可以在前端页面触发运行,但当页面执行router.back()关闭再次打开页面就无法被触发了。是否有办法让它每次被打开都能触发?

阅读 557
1 个回答

可以写在onControllerAttached回调里,参考链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-basic-components-web-V5\#oncontrollerattached10

通过registerJavaScriptProxy注册,文档地址:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-basic-components-web-V5\#registerjavascriptproxydeprecated

参考示例:

Web({ src: : this.url,, controller: this.controller }) .javaScriptAccess(true).onControllerAttached(()=>{
  this.controller.registerJavaScriptProxy(this.testOjb, "testObjName", ['toString','test']);
  this.controller.refresh();
})
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进