HarmonyOS webview加载H5需要在页面开始加载的时候通过localStorage注入的方式把参数保存,H5会取localStorage中的值进行加载,如何实现?

如题:HarmonyOS webview加载H5需要在页面开始加载的时候通过localStorage注入的方式把参数保存,H5会取localStorage中的值进行加载,如何实现?

阅读 491
1 个回答

可以通过runJavaScript方法异步执行JavaScript脚本,并通过回调方式返回脚本执行的结果。runJavaScript需要在loadUrl完成后,比如onPageEnd中调用。详细信息请参考如下文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-webview-V5\#runjavascript

通过runJavaScript来实现,示例如下:

Web({
  src: "",
  controller: this.controller,
  renderMode: RenderMode.SYNC_RENDER
})
  .domStorageAccess(true)
  .fileAccess(true)
  .mixedMode(MixedMode.All)
  .width('100%')
  .backgroundColor(Color.Orange)
  .onPageEnd(e => {
    try {
      this.controller.runJavaScript(
        "window.localStorage.setItem('XrmBaseUrl','test123');",
        (error, result) => {
          if (error) {
            console.error(`run JavaScript error, ErrorCode: ${(error as BusinessError).code},  Message: ${(error as BusinessError).message}`);
            return;
          }
          if (result) {
            this.webResult = result;
            console.info(`The test() return value is: ${result}`);
          }
        });
      if (e) {
        console.info('url: ', e.url);
      }
    } catch (error) {
      console.error(`ErrorCode: ${(error as BusinessError).code},  Message: ${(error as BusinessError).message}`);
    }
  })
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进