HarmonyOS鸿蒙Next中如何解决Web组件加载失败,出现白屏、加载内容不全的问题

HarmonyOS鸿蒙Next中如何解决Web组件加载失败,出现白屏、加载内容不全的问题

【问题现象】

HarmonyOS Next系统在使用webview加载资源时,经常会出现白屏,加载内容不全等情况。

【定位思路】

  1. 加载网络资源,确认网页可以在浏览器上正常打开,以及手机连接网络;
  2. 确认Web组件使用时,项目声明了网络权限ohos.permission.INTERNET
  3. 排查H5页面使用到哪些非常规能力,确认这些能力需要的权限是否配置。

【解决方案】

按照定位思路,确认网络环境正常,权限声明已配置,Web组件使用时配置以下权限:

Web({ src: $rawfile('index.html'), controller: this.controller })
  .domStorageAccess(true)
  .onlineImageAccess(true)
  .imageAccess(true)
  .fileAccess(true)
  .javaScriptAccess(true)
  • domStorageAccess:文档对象模型存储接口(DOM Storage API)权限,涉及sessionStoragelocalStorage前端存储时需要开启。
  • onlineImageAccess:从网络加载图片资源权限,默认开启,可不配置。
  • imageAccess:允许自动加载图片资源权限,默认开启,可不配置。
  • fileAccess:应用中文件系统的访问权限,涉及文件上传下载操作时需要开启。
  • javaScriptAccess:允许执行JavaScript脚本权限,默认开启,可不配置。

除上述权限原因外,还存在一些特殊情况造成加载H5页面白屏,例如:

  1. 加载H5资源时同时存在HTTP和HTTPS两种协议的资源,Web组件默认不允许加载HTTP和HTTPS混合内容,因此需要额外配置.mixedMode(MixedMode.ALL)
  2. 加载H5本地离线包时,H5页面存在使用相对路径的资源引用链接,Web组件内核不允许file协议或者resource协议访问URL上下文中来自跨域的请求,需要使用http或者https等协议替代原本使用的file协议或者resource协议进行加载。
  3. 有些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组件使用时配置以下权限:domStorageAccessonlineImageAccessimageAccessfileAccessjavaScriptAccess。若加载H5资源时存在HTTP和HTTPS混合内容,需配置.mixedMode(MixedMode.ALL)。加载H5本地离线包时,确保资源引用链接使用http或https协议。若H5页面通过UserAgent判断设备,需在.onControllerAttached函数中设置UserAgent值。

回到顶部