HarmonyOS 鸿蒙Next webview刷新问题

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

HarmonyOS 鸿蒙Next webview刷新问题

HarmonyOS webview刷新问题?

2 回复

参考代码

import web_webview from '[@ohos](/user/ohos).web.webview';
import business_error from '[@ohos](/user/ohos).base';

[@Entry](/user/Entry)
[@Component](/user/Component)
struct WebComponent {
 controller: web_webview.WebviewController = new web_webview.WebviewController();
 [@State](/user/State) msg1: string = ''
 [@State](/user/State) msg2: string = ''

 build() {
   Column() {
     Text(this.msg1).fontSize(20)
     Text(this.msg2).fontSize(20)
     Web({ src: $rawfile('index.html'), controller: this.controller })
       .javaScriptAccess(true)
       .onPageEnd(e => {
         try {
           this.controller.runJavaScriptExt(
             "test(\"" + '哈哈' + "\")",
             (error, result) => {
               if (error) {
                 let e: business_error.BusinessError = error as business_error.BusinessError;
                 console.error(`run JavaScript error, ErrorCode: ${e.code},  Message: ${e.message}`)
                 return;
               }
               if (result) {
                 try {
                   let type = result.getType();
                   switch (type) {
                     case web_webview.JsMessageType.STRING: {
                       this.msg1 = "result type:" + typeof (result.getString());
                       this.msg2 = "result getString:" + ((result.getString()));
                       break;
                     }
                     case web_webview.JsMessageType.NUMBER: {
                       this.msg1 = "result type:" + typeof (result.getNumber());
                       this.msg2 = "result getNumber:" + ((result.getNumber()));
                       break;
                     }
                     case web_webview.JsMessageType.BOOLEAN: {
                       this.msg1 = "result type:" + typeof (result.getBoolean());
                       this.msg2 = "result getBoolean:" + ((result.getBoolean()));
                       break;
                     }
                     case web_webview.JsMessageType.ARRAY_BUFFER: {
                       this.msg1 = "result type:" + typeof (result.getArrayBuffer());
                       this.msg2 = "result getArrayBuffer byteLength:" + ((result.getArrayBuffer().byteLength));
                       break;
                     }
                     case web_webview.JsMessageType.ARRAY: {
                       this.msg1 = "result type:" + typeof (result.getArray());
                       this.msg2 = "result getArray:" + result.getArray();
                       break;
                     }
                     default: {
                       this.msg1 = "default break, type:" + type;
                       break;
                     }
                   }
                 }
                 catch (resError) {
                   let e: business_error.BusinessError = resError as business_error.BusinessError;
                   console.error(`ErrorCode: ${e.code},  Message: ${e.message}`);
                 }
               }
             });
           if (e) {
             console.info('url: ', e.url);
           }
         } catch (error) {
           let e: business_error.BusinessError = error as business_error.BusinessError;
           console.error(`ErrorCode: ${e.code},  Message: ${e.message}`);
         }
       })
   }
 }
}

针对HarmonyOS 鸿蒙Next webview刷新问题,这通常涉及到多个层面的因素。以下是一些可能的原因及排查方向:

  1. 系统缓存:系统或应用缓存可能导致webview刷新异常。尝试清除缓存或重启设备,看是否能解决问题。
  2. 组件配置:检查webview组件的配置,确保已正确设置相关属性,如允许加载混合内容、开启数据库存储API权限等。
  3. 内存管理:鸿蒙系统对内存管理有严格要求,webview在内存紧张时可能无法正常刷新。优化应用内存使用,确保webview有足够的资源来刷新内容。
  4. 版本兼容性:确保webview组件与HarmonyOS系统的版本兼容。有时,系统更新或组件更新可能引入新的兼容性问题。

如果上述方法均未能解决问题,可能是webview或系统层面的更深层次问题。此时,建议直接联系官网客服,以获取更专业的帮助。官网地址是:https://www.itying.com/category-93-b0.html

回到顶部