HarmonyOS 鸿蒙Next webview只要设置了setCustomUserAgent就会显示异常
HarmonyOS 鸿蒙Next webview只要设置了setCustomUserAgent就会显示异常 webview只要设置了setCustomUserAgent就会显示异常
放到onControllerAttached回调中即可,示例代码:
Web({ src: '', controller: this.controller }).onControllerAttached(() => {
this.controller.loadData("<html><body bgcolor=\"white\"></html>", "text/html", "UTF-8", " ", " ")
})
-
onControllerAttached是当Controller成功绑定到Web组件时触发该回调,可以保证既能成功注入,时机又尽量靠前。
-
因为设置useragent会触发浏览器重新发送请求, 获取新的useragent匹配的网页内容, 所以会触发二次请求刷新界面,所以之前点击触发setCustomUserAgent界面会刷新, 要在页面加载之前进行设置, 可以改用onControllerAttached事件。
-
如果改为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