鸿蒙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()弹窗。要启用或自定义处理,请按以下步骤操作:

  1. 启用JavaScript支持

    WebView webView = findComponentById(ResourceTable.Id_webview);
    WebConfig webConfig = webView.getWebConfig();
    webConfig.setJavaScriptPermit(true); // 允许JavaScript执行
    
  2. 设置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"}]
  • 可扩展onJsConfirmonJsPrompt处理其他交互类型
  • 测试时使用load()加载网页而非本地文件需保证网络权限

此方案通过鸿蒙原生弹窗替代WebView默认弹窗,确保UI风格统一及功能正常。

回到顶部