javascript bom 的 confirm() 和 prompt() 是同步阻塞的原生对话框方法:confirm() 返回布尔值表示用户选择,prompt() 返回输入字符串或 null;二者不可样式化,移动端兼容性差,复杂场景建议用 dom 模态框替代。

JavaScript BOM 提供了 confirm() 和 prompt() 两个内置方法,用于弹出浏览器原生的确认框和输入框,无需额外库,直接调用即可。
用 confirm() 弹出确认框(带“确定/取消”按钮)
confirm() 显示一个模态对话框,包含提示文字和两个按钮:“确定”和“取消”。用户点击后返回布尔值:true 表示点了“确定”,false 表示点了“取消”或按了 Esc。
示例:
const isOk = confirm("确定要删除这条数据吗?");if (isOk) {
console.log("用户点了确定,执行删除");
} else {
console.log("用户取消了操作");
}
用 prompt() 弹出输入框(带文本输入和“确定/取消”)
prompt() 显示一个带输入框的对话框,可预设默认值。用户点击“确定”时返回输入的字符串(空输入也返回空字符串);点击“取消”或关闭对话框时返回 null。
注意:现代浏览器中,prompt 输入框不能被样式化,且部分移动端或严格模式下可能被禁用或忽略。
示例:
const name = prompt("请输入您的姓名", "张三");if (name !== null) {
console.log("用户输入了:" + name);
} else {
console.log("用户取消了输入");
}
使用注意事项
- 这两个方法都是**同步阻塞**的,会暂停后续 JS 执行,直到用户关闭对话框;不适合复杂交互场景
- 在 iframe 或弹窗中调用时,需确保上下文有用户激活(如由 click 事件触发),否则可能被浏览器拦截
- 不支持自定义按钮文字、图标或样式,如需美化,建议改用基于 DOM 的模态框(如 Bootstrap Modal 或自定义 div)
- 在部分 iOS Safari 和 Chrome 移动版中,
prompt()可能无法正常聚焦输入框,体验较差
简单替代方案(轻量级 DOM 模态)
如果需要更好控制或兼容性,可用几行代码模拟基本功能:
- 创建一个
<div> 作为遮罩层 + 内容区 <li>用 <code>input[type="text"]替代prompt(),用两个按钮替代confirm() - 通过回调函数处理用户选择,避免阻塞主线程











