HarmonyOS鸿蒙Next中如何解决Web组件加载失败,出现白屏、加载内容不全的问题
HarmonyOS鸿蒙Next中如何解决Web组件加载失败,出现白屏、加载内容不全的问题
【问题现象】
HarmonyOS Next系统在使用webview加载资源时,经常会出现白屏,加载内容不全等情况。
【定位思路】
- 加载网络资源,确认网页可以在浏览器上正常打开,以及手机连接网络;
- 确认Web组件使用时,项目声明了网络权限
ohos.permission.INTERNET
; - 排查H5页面使用到哪些非常规能力,确认这些能力需要的权限是否配置。
【解决方案】
按照定位思路,确认网络环境正常,权限声明已配置,Web组件使用时配置以下权限:
Web({ src: $rawfile('index.html'), controller: this.controller })
.domStorageAccess(true)
.onlineImageAccess(true)
.imageAccess(true)
.fileAccess(true)
.javaScriptAccess(true)
domStorageAccess
:文档对象模型存储接口(DOM Storage API)权限,涉及sessionStorage
、localStorage
前端存储时需要开启。onlineImageAccess
:从网络加载图片资源权限,默认开启,可不配置。imageAccess
:允许自动加载图片资源权限,默认开启,可不配置。fileAccess
:应用中文件系统的访问权限,涉及文件上传下载操作时需要开启。javaScriptAccess
:允许执行JavaScript脚本权限,默认开启,可不配置。
除上述权限原因外,还存在一些特殊情况造成加载H5页面白屏,例如:
- 加载H5资源时同时存在HTTP和HTTPS两种协议的资源,Web组件默认不允许加载HTTP和HTTPS混合内容,因此需要额外配置
.mixedMode(MixedMode.ALL)
。 - 加载H5本地离线包时,H5页面存在使用相对路径的资源引用链接,Web组件内核不允许
file
协议或者resource
协议访问URL上下文中来自跨域的请求,需要使用http
或者https
等协议替代原本使用的file
协议或者resource
协议进行加载。 - 有些H5页面通过
UserAgent
对设备进行了判断,如果不符合条件,默认不加载或者加载固定错误页面,需要在.onControllerAttached
函数中通过WebviewController
设置UserAgent
值。
更多关于HarmonyOS鸿蒙Next中如何解决Web组件加载失败,出现白屏、加载内容不全的问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html
1 回复
更多关于HarmonyOS鸿蒙Next中如何解决Web组件加载失败,出现白屏、加载内容不全的问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
确认网络环境正常,权限声明已配置,Web组件使用时配置以下权限:domStorageAccess
、onlineImageAccess
、imageAccess
、fileAccess
、javaScriptAccess
。若加载H5资源时存在HTTP和HTTPS混合内容,需配置.mixedMode(MixedMode.ALL)
。加载H5本地离线包时,确保资源引用链接使用http或https协议。若H5页面通过UserAgent判断设备,需在.onControllerAttached
函数中设置UserAgent值。