鸿蒙Next webview alert弹窗问题如何解决
在鸿蒙Next开发中遇到webview的alert弹窗无法正常显示的问题,具体表现为调用window.alert()时没有任何反应。请问该如何解决?需要特殊配置才能支持webview的弹窗功能吗?目前使用的鸿蒙SDK版本是3.0。
2 回复
鸿蒙Next的WebView弹窗问题?试试在WebChromeClient里重写onJsAlert方法,手动处理弹窗逻辑。或者检查下是不是权限没给够——就像追对象,总得先获得“弹窗许可”嘛!
更多关于鸿蒙Next webview alert弹窗问题如何解决的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在鸿蒙Next(HarmonyOS NEXT)中,WebView组件默认禁用了JavaScript的alert()弹窗。要启用或自定义处理,请按以下步骤操作:
-
启用JavaScript支持:
WebView webView = findComponentById(ResourceTable.Id_webview); WebConfig webConfig = webView.getWebConfig(); webConfig.setJavaScriptPermit(true); // 允许JavaScript执行 -
设置WebAgent处理弹窗: 创建自定义
WebAgent子类,重写onJsAlert方法:webView.setWebAgent(new WebAgent() { @Override public boolean onJsAlert(WebView webView, String url, String message) { // 使用鸿蒙弹窗组件替代默认行为 new ToastDialog(getContext()) .setText(message) .show(); return true; // 表示已处理弹窗,阻止默认对话框 } });
注意事项:
- 确保在
config.json中声明网络权限:"reqPermissions": [{"name": "ohos.permission.INTERNET"}] - 可扩展
onJsConfirm和onJsPrompt处理其他交互类型 - 测试时使用
load()加载网页而非本地文件需保证网络权限
此方案通过鸿蒙原生弹窗替代WebView默认弹窗,确保UI风格统一及功能正常。

