HarmonyOS 鸿蒙Next:buildmodle为release后,webview显示空白

发布于 1周前 作者 sinazl 最后一次编辑是 5天前 来自 鸿蒙OS

HarmonyOS 鸿蒙Next:buildmodle为release后,webview显示空白

HarmonyOS NEXT 应用,用webview嵌入本地页面,调试的时候没问题,但是当选择buildmodle为release后,webview会显示空白;

使用devtool查看页面发现提示doesn’t work properly without JavaScript enabled. Please enable it to continue.

页面的代码如下:

// HomePage.ets
import { webview } from '@kit.ArkWeb';
import { router } from '@kit.ArkUI';
import { JavaScriptInterface, WebViewControllerProxy,CompleteHandler} from  '@hzw/ohos-dsbridge'
import PreferencesUtils from '../utils/PreferencesUtils'
import { ValueType } from '@kit.ArkData';

@Entry
@Component
export struct HomePage {
  @State loaded: boolean = false;
  // webviewController: webview.WebviewController = new webview.WebviewController();
  private controller: WebViewControllerProxy = WebViewControllerProxy.createController()
  aboutToAppear() {
    // 配置Web开启调试模式
    webview.WebviewController.setWebDebuggingAccess(true);
    this.controller.addJavascriptObject(this);
  }
  @JavaScriptInterface()
  getLoginInfos(handler: CompleteHandler) {
    console.log('getLoginInfos-start')
    PreferencesUtils.get("userData").then(userData=>{
      console.log('getLoginInfos-userData:'+JSON.stringify(userData))
      handler.complete(JSON.stringify(userData))
    })
  }
  @JavaScriptInterface()
  getBtnPermissions(handler: CompleteHandler) {
    console.log('getBtnPermissions-start')
    PreferencesUtils.get("SystemUser_Permission").then(res=>{
      console.log('SystemUser_Permission='+res,Array.isArray(res))
      handler.complete(JSON.stringify({
        id: 0,
        permission: res
      }))
    })
  }
  @JavaScriptInterface()
  appSlide(handler: CompleteHandler) {
    console.log("收到appSlide回调")
    handler.complete('')
  }
  @JavaScriptInterface()
  jumpPage(data:string,handler: CompleteHandler){
    console.log('jumpPage:',data)
    router.pushUrl({url:'pages/FragmentWebViews',params:{route:data}})
    handler.complete(data)
  }

  build() {
    Stack() {
      Web({ src: "resource://rawfile/homePage/index.html#home", controller: this.controller.getWebViewController() })
        .javaScriptAccess(true)
        .javaScriptProxy(this.controller.getJavaScriptProxy())
        .onAlert((event) => {
          // AlertDialog.show({ message: event.message })
          return false
        })
        .domStorageAccess(true)
        .zoomAccess(true)
        .fileAccess(true)
        .imageAccess(true)
        .onlineImageAccess(true)
        .mixedMode(MixedMode.All)
        .height('100%')
        .width('100%')
        .onPageEnd((event) => {
          if (event) {
            this.loaded = true;
          }
        })
      if(!this.loaded){
        LoadingProgress().height(180).color('#cd0401')
      }
    }
  }
}

2 回复
楼主您好!index.html的部分代码方便贴下吗?我这边本地来运行试试;另外确认下buildmodle设置为release,是在哪里设置的模式?

针对HarmonyOS 鸿蒙Next在buildmodle设置为release后,webview显示空白的问题,以下是一些可能的解决方案:

  1. 检查权限:确保应用已添加必要的权限,如网络权限(ohos.permission.INTERNET),以及文件访问、图片访问、在线图片访问等权限,这些权限对于webview加载资源是必要的。
  2. 检查网页内容:若webview加载的是本地或在线网页,请检查网页内容是否存在JavaScript错误或HTML语法错误。可以使用浏览器打开对应页面验证是否存在问题,或使用Devtools工具调试前端页面。
  3. 特定字符问题:如果网页内容中含有字符“#”,可能导致webview显示问题。尝试对含有“#”的内容进行转义(如转换成%23)或进行base64编码。
  4. 系统兼容性:检查webview组件是否与当前HarmonyOS版本兼容,并尝试更新或替换webview组件版本。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部