HarmonyOS 鸿蒙Next Web组件中的alert显示问题

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

HarmonyOS 鸿蒙Next Web组件中的alert显示问题

我的页面有一个alert弹窗,在Web组件中不能显示,但是我监听onAlert回调时,能打印出来alert的内容,请问要怎么才能正常显示alert弹窗?

2 回复

alert在webview组件中被屏蔽了,可以使用弹窗实现,提供下面的demo:

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

[@Entry](/user/Entry)
[@Component](/user/Component)
struct WebComponent {
 controller: web_webview.WebviewController = new web_webview.WebviewController()
 build() {
   Column() {
     Web({ src: $rawfile("index.html"), controller: this.controller })
       .onAlert((event) => {
         if (event) {
           console.log("event.url:" + event.url)
           console.log("event.message:" + event.message)
           AlertDialog.show({
             title: 'onAlert',
             message: 'text',
             primaryButton: {
               value: 'cancel',
               action: () => {
                 event.result.handleCancel()
               }
             },
             secondaryButton: {
               value: 'ok',
               action: () => {
                 event.result.handleConfirm()
               }
             },
             cancel: () => {
               event.result.handleCancel()
             }
           })
         }
         return true
       })
   }
 }
}

针对HarmonyOS鸿蒙Next Web组件中的alert显示问题,这通常是由于鸿蒙系统的Webview组件对JavaScript弹窗(如alert, confirm)的处理存在差异或限制。以下是可能的解决方案:

  1. 权限配置:确保应用已授予必要的权限,特别是与Web视图相关的权限,如INTERNET和ACCESS_NETWORK_STATE。
  2. UI线程检查:alert弹窗依赖于UI线程,如果UI线程被长时间占用,可能导致弹窗无法及时响应。检查并优化UI线程的使用。
  3. Webview兼容性:确认使用的Webview组件版本及兼容性,必要时考虑升级或调整代码以适应鸿蒙系统的特性。
  4. 安全策略:鸿蒙系统可能实施了更严格的安全策略,限制弹窗行为。检查是否有相关系统设置或安全策略影响了alert的显示。
  5. 使用onAlert事件:在鸿蒙的WebView组件中,可以通过监听onAlert事件来处理JavaScript中的alert弹窗,并使用AlertDialog来显示相应的提示信息。

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

回到顶部