防止 <dialog> 在 Chrome 中按下 Esc 键时关闭

iov*_*uio 17 html javascript dialog google-chrome

<dialog>按下 Esc 时,Google Chrome 浏览器会关闭元素。似乎对按键有反应。

火狐没有。这是预期的行为,因为关闭任何按键都很容易实现。

如何让 Google Chrome 在 Esc 上保持打开对话框?

请参阅小提琴https://jsfiddle.net/zeqo7kaf/1/

我已经实现了window's, document's, body's, dialog's 键事件(向上、向下和按下)以防止传播,但在我看来,这高于 dom 事件。

(为了在 Firefox 中查看对话框,请转到about:config并将属性设置dom.dialog_element.enabledtrue)。

Exp*_*ten 45

您可以尝试使用cancel事件:MDN

dialog.addEventListener('cancel', (event) => {
    event.preventDefault();
});
Run Code Online (Sandbox Code Playgroud)

修改后的JSFiddle:https://jsfiddle.net/7et3hf8p/

  • `cancel` 事件文档现在位于 [`HTMLElement`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement) 下,这有点不幸,因为 [`HTMLDialogElement` 的页面`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLDialogElement) 没有一个很好的例子,只列出了似乎只在对话框之后触发的 `close` 事件关闭了。同样在 Chrome 中,按 Esc 两次似乎仍然会关闭它,即使在阻止之后...在 Firefox 中,它按预期工作 (2认同)