HarmonyOS 鸿蒙Next:buildmodle为release后,webview显示空白
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显示空白的问题,以下是一些可能的解决方案:
- 检查权限:确保应用已添加必要的权限,如网络权限(ohos.permission.INTERNET),以及文件访问、图片访问、在线图片访问等权限,这些权限对于webview加载资源是必要的。
- 检查网页内容:若webview加载的是本地或在线网页,请检查网页内容是否存在JavaScript错误或HTML语法错误。可以使用浏览器打开对应页面验证是否存在问题,或使用Devtools工具调试前端页面。
- 特定字符问题:如果网页内容中含有字符“#”,可能导致webview显示问题。尝试对含有“#”的内容进行转义(如转换成%23)或进行base64编码。
- 系统兼容性:检查webview组件是否与当前HarmonyOS版本兼容,并尝试更新或替换webview组件版本。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。