HarmonyOS Web组件允许再弹出窗,弹出窗中设置的自定义UserAgent在渲染时无作用,只有在弹窗中再次点击url后有作用
Web组件允许再弹出窗,弹出窗中设置的自定义UserAgent在渲染时无作用,只有在弹窗中再次点击url后有作用。
Web({ src: $rawfile('local/index.html'), controller: this.webController })
  .multiWindowAccess(true)
  .allowWindowOpenMethod(true)
  .onWindowNew((event) => {
    console.log('pop url: ' + event.targetUrl);
    if (this.dialogController) {
      this.dialogController.close();
    }
    let popController: webview.WebviewController = new webview.WebviewController();
    this.dialogController = new CustomDialogController({
      builder: NewWebViewComp({ webviewController: popController })
    })
    this.dialogController.open();
    //将新窗口对应WebviewController返回给Web内核。
    //如果不需要打开新窗口请调用event.handler.setWebController接口设置成null。
    //若不调用event.handler.setWebController接口,会造成render进程阻塞。
    event.handler.setWebController(popController);
  })
@CustomDialog
export struct NewWebViewComp {
  controller?: CustomDialogController;
  webviewController: webview.WebviewController = new webview.WebviewController();
  ua: string =
    "xxx";
  build() {
    Column() {
      Web({ src: "", controller: this.webviewController })
        .javaScriptAccess(true)
        .multiWindowAccess(true)
        .domStorageAccess(true)
        .onWindowExit(() => {
          console.info("NewWebViewComp onWindowExit");
          if (this.controller) {
            this.controller.close();
          }
        })
        .onControllerAttached(() => {
          console.log("onControllerAttached");
          try {
            // 这里设置的UserAgent,在第一次渲染时没有作用
            this.webviewController.setCustomUserAgent(this.ua);
            console.log("subWeb ua:" + this.ua);
          } catch (error) {
            console.error(`ErrorCode: ${(error as BusinessError).code},  Message: ${(error as BusinessError).message}`);
          }
        })
    }
  }
}
        HarmonyOS
      
        赞
        
 收藏 0
 回答 1
 
        待解决
        
相关问题
 HarmonyOS 地图自定义弹窗消息窗 
1100浏览  • 1回复 待解决
如何在自定义弹窗中再次弹窗 
3606浏览  • 1回复 待解决
HarmonyOS  全局自定义弹窗无法弹出 
1273浏览  • 1回复 待解决
HarmonyOS  如何自定义UICalendarPicker点击弹出 
993浏览  • 1回复 待解决
当为一个按钮设置了bindPop弹窗,点击按钮弹窗显示,点击空白处弹窗消失了,再次点击按钮,弹窗不会再弹出 
1869浏览  • 1回复 待解决
HarmonyOS  CustomDialogController 自定义弹窗无法在 class 和 静态方法中正常弹出 
1335浏览  • 1回复 待解决
弹窗中半窗怎么设置?怎么具体设置? 
639浏览  • 2回复 待解决
HarmonyOS  自定义弹窗在页面中显示时,如何防止用户侧滑关闭自定义弹窗 
1273浏览  • 1回复 待解决
HarmonyOS 自定义弹窗能否在 非 Component 或 Entry 修饰的文件中弹出 
874浏览  • 1回复 待解决
HarmonyOS  自定义组件的自定义布局 数据的作用域不对 
1410浏览  • 1回复 待解决
HarmonyOS @watch在同层渲染中监听变量不起作用 
936浏览  • 1回复 待解决
HarmonyOS  外部函数中如何弹出自定义 Dialog? 
892浏览  • 1回复 待解决
HarmonyOS 请问自定义弹窗如何在非UI组件的逻辑中弹出 
1012浏览  • 1回复 待解决
HarmonyOS 自定义工具类中怎么弹出CustomDialogController自定义弹框? 
1858浏览  • 1回复 待解决
自定义弹窗中有弹出键盘的需要,但是弹出之后如何消除键盘和弹窗之间的距离 
2213浏览  • 1回复 待解决
HarmonyOS自定义Text时,点击Text如何实现弹出软键盘的功能? 
5688浏览  • 3回复 待解决
权限申请的弹窗点击禁止之后,再次申请权限时无法弹出 
2656浏览  • 1回复 待解决
HarmonyOS 在ArkTS类中想调用自定义弹窗 
1204浏览  • 1回复 待解决
在ArkUI中,如何实现一个自定义弹窗组件? 
669浏览  • 1回复 待解决
自定义弹窗能否在ts文件中定义和使用 
3593浏览  • 1回复 待解决
HarmonyOS开发中地图信息窗可以自定义布局吗? 
1234浏览  • 0回复 待解决
HarmonyOS WebView设置自定义UserAgent 
1531浏览  • 1回复 待解决
HarmonyOS dialog在非组件类中无法弹出 
1202浏览  • 1回复 待解决
如何自定义弹窗的弹出动画和关闭动画 
4119浏览  • 2回复 待解决
HarmonyOS 地图组件自定义信息窗 无法实现效果 
1274浏览  • 1回复 待解决





















问题原因为setCustomUserAgent调用的时机不正确导致,可以尝试在创建WebviewController的时候或者更早的时候就设置UserAgent,参考示例如下: