必须调用showModal()才能激活dialog模态行为;仅写HTML标签或加open属性无效,因dialog默认不渲染、不占布局,无遮罩、不锁焦点、Esc不响应。

原生 alert() 是最简方案,但不可定制、阻塞主线程;<dialog></dialog> 是现代标准解法,但必须调用 showModal() 才生效,否则只是个隐藏 DOM 节点。
为什么直接写 <dialog></dialog> 看不到任何内容
因为 <dialog></dialog> 默认不渲染、不占布局、getBoundingClientRect() 返回空值。仅加 open 属性(如 <dialog open></dialog>)能让内容“可见”,但没遮罩层、不锁焦点、按 Esc 不关闭——它不是模态框,只是个浮动 div。
- 必须调用
dialog.showModal()才真正激活模态行为 - 脚本执行早于 DOM 加载会报
Cannot read property 'showModal' of null,把<script></script>放在



















