HTMLDialogElement: cancel 事件

Baseline 已广泛支持

此特性已经十分成熟,可在许多设备和浏览器版本上使用。自 2022 年 3 月起,它已在各浏览器中可用。

当用户指示浏览器关闭当前打开的对话框时,会在 <dialog> 元素上触发 cancel 事件。当用户按下 Esc 键时,浏览器会触发此事件。

此事件是可取消的,但不能冒泡。

当使用 Esc 键关闭 <dialog> 时,会同时触发 cancelclose 事件。

语法

在诸如 addEventListener() 之类的方法中使用事件名称,或设置事件处理程序属性。

js
addEventListener("cancel", (event) => { })

oncancel = (event) => { }

事件类型

一个通用的 Event

示例

取消对话框

HTML

html
<dialog class="example-dialog">
  <button class="close">Close</button>
</dialog>

<button class="open-dialog">Open dialog</button>

<div class="result"></div>

JavaScript

js
const result = document.querySelector(".result");

const dialog = document.querySelector(".example-dialog");

dialog.addEventListener("cancel", (event) => {
  result.textContent = "dialog was canceled";
});

const openDialog = document.querySelector(".open-dialog");
openDialog.addEventListener("click", () => {
  if (typeof dialog.showModal === "function") {
    dialog.showModal();
    result.textContent = "";
  } else {
    result.textContent = "The dialog API is not supported by this browser";
  }
});

const closeButton = document.querySelector(".close");
closeButton.addEventListener("click", () => {
  dialog.close();
});

结果

规范

规范
HTML
# event-cancel
HTML
# handler-oncancel

浏览器兼容性

另见