HarmonyOS web里的userAgent,第一次进页面是能正常获取到,第二次进页面就获取不到了, webview.once('webInited'不往里面执行了

HarmonyOS
2024-12-17 13:54:47
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Excelsior_abit

webview.once接口的规格是,订阅一次指定类型Web事件的回调,当从历史栈中调出来后之前执行过就不会再执行一次

可以参考如下demo:

import web_webview from '@ohos.web.webview';
import business_error from '@ohos.base';

class WebObj {
  constructor() {
  }

  webTest(): string {
    console.log('Web test');
    return "Web test";
  }

  webString(): void {
    console.log('Web test toString');
  }
}

@Entry
@Component
struct WebComponent {
  controller: web_webview.WebviewController = new web_webview.WebviewController()
  @State webTestObj: WebObj = new WebObj();
  @State ua: string = ""

  build() {
    Column() {
      Button('refresh')
        .onClick(() => {
          try {
            this.controller.refresh();
          } catch (error) {
            let e: business_error.BusinessError = error as business_error.BusinessError;
            console.error(`ErrorCode: ${e.code},  Message: ${e.message}`);
          }
        })
      Web({ src: '', controller: this.controller })
        .javaScriptAccess(true)
        .onControllerAttached(() => {
          let userAgent = this.controller.getUserAgent();
          console.log("userAgent: " + userAgent);
          // 应用侧用法示例,定制UserAgent。
          this.ua = this.controller.getUserAgent() + 'xxx';
          console.log("this.ua: " + this.ua);
          this.controller.loadUrl('https://www.huawei.com/');
          this.controller.registerJavaScriptProxy(this.webTestObj, "objTestName", ["webTest", "webString"]);
        })
    }
  }
}
分享
微博
QQ
微信
回复
2024-12-17 15:57:56
相关问题
如何判断APP是否第一次请求权限?
786浏览 • 1回复 待解决
HarmonyOS aioxs二次封装
539浏览 • 1回复 待解决
HarmonyOS 权限二次申请
355浏览 • 1回复 待解决
HarmonyOS 每秒执行一次函数
564浏览 • 2回复 待解决