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

瀏覽器相容性

另見