Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

HTMLDialogElement: cancel-Ereignis

Baseline
Weitgehend verfügbar

Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit März 2022 browserübergreifend verfügbar.

Das cancel-Ereignis wird auf einem <dialog>-Element ausgelöst, wenn der Benutzer eine Schließanforderung auslöst.

Mit dem Event-Handler für cancel können Sie das Standardverhalten bei einer Schließanforderung außer Kraft setzen und verhindern, dass der Dialog geschlossen wird. Wird das Standardverhalten nicht verhindert, wird der Dialog geschlossen und ein close-Ereignis ausgelöst.

Schließanforderungen können ausgelöst werden durch:

  • Drücken der Esc-Taste auf Desktop-Plattformen
  • Aufrufen der Methode requestClose()
  • Betätigen der Zurück-Schaltfläche auf mobilen Plattformen

Dieses Ereignis kann abgebrochen werden und wird nicht nach oben weitergegeben.

Syntax

Verwenden Sie den Ereignisnamen in addEventListener():

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

Alternativ können Sie den Event-Handler der Event-Handler-Eigenschaft der Schnittstelle zuweisen:

js
oncancel = (event) => { }

Ereignistyp

Ein generisches Event.

Beispiele

Schließen eines Dialogs verhindern

Das folgende Beispiel zeigt eine Schaltfläche, die beim Anklicken mit der Methode showModal() einen <dialog> öffnet.

Sie können das cancel-Ereignis auslösen, indem Sie entweder auf die Schaltfläche Request Close klicken, um den Dialog zu schließen (über die Methode requestClose()), oder die Esc-Taste drücken.

Beachten Sie, dass der Event-Handler für cancel das Ereignis protokolliert und dann zurückkehrt, sodass der Dialog geschlossen werden kann (wodurch wiederum das close-Ereignis ausgelöst wird). Sie können die Auskommentierung der Zeile mit event.preventDefault() entfernen, um das Ereignis abzubrechen.

HTML

html
<dialog id="dialog">
  <button type="button" id="request-close">Request Close</button>
</dialog>

<button id="open">Open dialog</button>

JavaScript

js
const dialog = document.getElementById("dialog");
const openButton = document.getElementById("open");
const requestCloseButton = document.getElementById("request-close");

// Open button opens a modal dialog
openButton.addEventListener("click", () => {
  log("open button click event fired", true);
  log("dialog showModal() called");
  dialog.showModal();
});

// Request close
requestCloseButton.addEventListener("click", () => {
  log("request close button click event fired");
  log("dialog requestClose() called");
  // Triggers the cancel event
  dialog.requestClose();
});

// Fired when requestClose() is called
// Prevent the dialog from closing by calling event.preventDefault()
dialog.addEventListener("cancel", (event) => {
  log("dialog cancel event fired");
  // Uncomment the next two lines to prevent the dialog from closing
  // log("dialog close canceled");
  // event.preventDefault();
});

dialog.addEventListener("close", (event) => {
  log("dialog close event fired");
});

Ergebnis

Spezifikationen

Spezifikation
HTML
# event-cancel
HTML
# handler-oncancel

Browser-Kompatibilität

Siehe auch