HarmonyOS 鸿蒙Next ArtTs webview 加载锚点链接空白

HarmonyOS 鸿蒙Next ArtTs webview 加载锚点链接空白

Web().cacheMode(CacheMode.None)时加载链接 https://beian.miit.gov.cn/ 会陷入死循环,其中 onPageBegin、onPageBegin 和 onLoadIntercept 这3个回调会不停地触发

Web({
src: ‘https://beian.miit.gov.cn/’,
controller: this.webViewController
})
.cacheMode(CacheMode.None)
.onLoadIntercept (() => {
console.log( webUrl: '<a class="autoSetLinkTag" href="https://beian.miit.gov.cn/" target="_blank" rel="nofollow">https://beian.miit.gov.cn/</a>' onLoadIntercept);
return false;
})
.onPageBegin(() => {
console.log( webUrl: '<a class="autoSetLinkTag" href="https://beian.miit.gov.cn/" target="_blank" rel="nofollow">https://beian.miit.gov.cn/</a>' 加载完成);
})


更多关于HarmonyOS 鸿蒙Next ArtTs webview 加载锚点链接空白的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复
针对设置CacheMode.None导致页面不显示分析如下:
None加载资源使用cache,如果cache中无该资源则从网络中获取。
优先从缓存中加载网页,而锚点是网页中的一个标记,只是用于页面内跳转,不是一个独立的网页。因此,如果该网页已经被缓存,那么加载锚点时就不会重新请求网络,而是直接从缓存中读取,导致无法加载锚点
我们的cacheMode实现跟安卓是一样的,CacheMode.None对应的是安卓的webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
安卓配置LOAD_CACHE_ELSE_NETWORK也是打不开https://beian.miit.gov.cn/的,现象是一致的

更多关于HarmonyOS 鸿蒙Next ArtTs webview 加载锚点链接空白的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


针对HarmonyOS 鸿蒙Next ArtTs webview加载锚点链接出现空白的问题,这通常是由于webview在处理特定字符(如“#”)时存在兼容性问题。在鸿蒙系统的webview组件中,如果加载的HTML内容含有“#”字符,可能导致页面加载不完整或出现空白。

要解决这个问题,可以尝试以下方法:

  1. URL编码:将锚点链接中的“#”字符进行URL编码,替换为“%23”。这样处理后的链接在webview中通常能够正常加载。
  2. Base64编码:如果URL编码无法解决问题,可以尝试将整个HTML内容或链接进行Base64编码,然后在webview中加载编码后的内容。注意编码后的内容类型需设置为“base64”。

请按照上述方法操作,并检查webview组件的配置和代码实现,确保没有其他潜在的错误导致页面加载失败。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部