HarmonyOS 路由第二次跳转到webview页面,无法触发webview.once\('webInited'\)方法?

//1. 第一次跳转
router.pushNamedRoute({ name: 'webview', params: { identifier: 'A页面的地址' } })

webview注册(可以进入webInited方法):
aboutToAppear() {
  webview.once('webInited', async () => {
    ....
  })
}
//2.第二次跳转
router.pushNamedRoute({ name: 'webview', params: { identifier: 'B页面的地址' } })

跳转后没有进入webInited方法

阅读 569
1 个回答

once方法只会订阅一次指定的web事件回调,当事件触发后,回调函数会被执行一次,然后自动取消订阅。即使事件被多次触发,回调函数也只会被执行一次。

once接口官方文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-webview-V5\#once

可以尝试在onPageEnd方法里写业务代码,修改如下

Web({ src: this.src, controller: this.webController }).onPageEnd(()=>{
  try {
    // 自定义UserAgent。
    const uaStr = this.webController.getUserAgent();

    this.webController.setCustomUserAgent(uaStr + '/112222');
  } catch (error) {
    console.error(`ErrorCode: ${(error as BusinessError).code},  Message: ${(error as BusinessError).message}`);
  }
})
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进