在鸿蒙Next中,confirm() 在App内不生效但在浏览器生效,主要原因是运行环境差异:
- 
API支持不同 
- confirm()是Web浏览器提供的原生JavaScript弹窗API。
- 鸿蒙App使用ArkTS/ArkUI开发,运行在非浏览器环境,可能未内置此API。
 
- 
鸿蒙UI规范限制 
- 鸿蒙推荐使用系统组件(如AlertDialog)实现弹窗,确保界面统一和性能优化。
- 直接调用confirm()可能被框架拦截或忽略。
 
解决方案:
使用鸿蒙的AlertDialog组件替代:
import { AlertDialog } from '@ohos.arkui.advanced';
// 示例:封装类Web的confirm功能
async function showConfirm(message: string): Promise<boolean> {
  return new Promise((resolve) => {
    AlertDialog.show({
      title: '提示',
      message: message,
      primaryButton: {
        value: '确定',
        action: () => resolve(true)
      },
      secondaryButton: {
        value: '取消',
        action: () => resolve(false)
      }
    });
  });
}
// 调用示例
showConfirm('确认操作?').then((result) => {
  console.log('用户选择:', result); // true或false
});
关键点:
- 在鸿蒙应用中,需遵循ArkUI开发规范,使用原生组件替代浏览器API。
- 若应用需同时支持Web和鸿蒙环境,可通过条件判断动态选择实现方式。