HarmonyOS 鸿蒙Next webview只要设置了setCustomUserAgent就会显示异常

发布于 1周前 作者 yuanlaile 来自 鸿蒙OS

HarmonyOS 鸿蒙Next webview只要设置了setCustomUserAgent就会显示异常 webview只要设置了setCustomUserAgent就会显示异常

2 回复

放到onControllerAttached回调中即可,示例代码:

Web({ src: '', controller: this.controller }).onControllerAttached(() => {
  this.controller.loadData("<html><body bgcolor=\"white\"></html>", "text/html", "UTF-8", " ", " ")
})
  1. onControllerAttached是当Controller成功绑定到Web组件时触发该回调,可以保证既能成功注入,时机又尽量靠前。

  2. 因为设置useragent会触发浏览器重新发送请求, 获取新的useragent匹配的网页内容, 所以会触发二次请求刷新界面,所以之前点击触发setCustomUserAgent界面会刷新, 要在页面加载之前进行设置, 可以改用onControllerAttached事件。

  3. 如果改为onControllerAttached后界面仍然是视频中刷新后缩小后的界面,请检查代码是否有根据setCustomUserAgent中设置的字段适配不同设备的处理。

官方文档中推荐setCustomUserAgent设置的位置是onControllerAttached回调事件,

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-webview-V5

参考文档: https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/web/web-default-userAgent.md

h5网站需要增加对鸿蒙Web的UA适配,即在h5网站中通过ArkWeb关键字识别是否是OpenHarmony设备以及web内核是否为ArkWeb,进行移动端的屏幕和布局适配。

demo示例

// xxx.ets

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

@Entry
@Component
export struct WebPage {
  controller: web_webview.WebviewController = new web_webview.WebviewController()

  build() {
    Column(){
      Web(
        {
          src: "m.baidu.com",
          controller: this.controller,
        }
      )
      .width('100%')
      .height('80%')
      .javaScriptAccess(true)
      .fileAccess(true)

      Button(
        "设置userAgent",
      ).onClick(() =>{
        this.controller.setCustomUserAgent("xxx")
      })
    }
  }
}

更多关于HarmonyOS 鸿蒙Next webview只要设置了setCustomUserAgent就会显示异常的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


针对HarmonyOS(鸿蒙)Next webview中设置setCustomUserAgent后显示异常的问题,这通常是由于自定义User-Agent字符串与webview的某些内部处理机制不兼容或格式不正确导致的。

解决此问题的一种方法是检查并确保你设置的自定义User-Agent字符串符合标准的HTTP User-Agent格式。避免使用特殊字符或过长的字符串,这些都可能导致webview解析出错。

此外,鸿蒙系统的webview可能对其支持的User-Agent特性有所限制。建议查阅鸿蒙系统的官方文档,了解webview组件对User-Agent的具体要求和限制。

如果自定义User-Agent是为了特定的功能或兼容性考虑,尝试与鸿蒙系统的webview组件进行更深入的兼容性测试,或者寻找其他方式实现相同的功能需求,例如通过修改请求头或使用其他技术替代。

如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html

回到顶部