HTMLElement: toggle Ereignis

Baseline Widely available *

This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.

* Some parts of this feature may have varying levels of support.

Das toggle Ereignis der HTMLElement Schnittstelle wird bei einem Popover Element, einem <dialog> Element oder einem <details> Element unmittelbar nach dessen Anzeige oder Ausblendung ausgelöst.

  • Wenn das Element vom ausgeblendeten in den angezeigten Zustand wechselt, wird die Eigenschaft event.oldState auf closed gesetzt und die Eigenschaft event.newState auf open.
  • Wenn das Element vom angezeigten in den ausgeblendeten Zustand wechselt, ist event.oldState open und event.newState closed.

Dieses Ereignis ist nicht abbrechbar.

Syntax

Verwenden Sie den Ereignisnamen in Methoden wie addEventListener() oder setzen Sie eine Ereignishandler-Eigenschaft.

js
addEventListener("toggle", (event) => {});

ontoggle = (event) => {};

Ereignistyp

Beispiele

Der folgende Beispielcode demonstriert, wie das toggle Ereignis für ein Popover verwendet werden kann. Der gleiche Code kann auf <dialog> oder <details> Elemente auf die gleiche Weise angewendet werden.

Einfaches Beispiel

Dieses Beispiel zeigt, wie Sie das toggle Ereignis überwachen und das Ergebnis protokollieren können.

HTML

Das HTML besteht aus einem Popover und einem Button, um es zu öffnen und zu schließen.

html
<button popovertarget="mypopover">Toggle the popover</button>
<div id="mypopover" popover>Popover content</div>

JavaScript

Der Code fügt einen Ereignislistener für das toggle Ereignis hinzu und protokolliert den Zustand.

js
const popover = document.getElementById("mypopover");

popover.addEventListener("toggle", (event) => {
  if (event.newState === "open") {
    console.log("Popover has been shown");
  } else {
    console.log("Popover has been hidden");
  }
});

Ergebnis

Ein Hinweis zum Coalescing von toggle Ereignissen

Wenn mehrere toggle Ereignisse ausgelöst werden, bevor der Ereignis-Loop die Chance hat, erneut zu durchlaufen, wird nur ein einziges Ereignis ausgelöst. Dies wird als "Ereignis-Coalescing" bezeichnet.

Zum Beispiel:

js
popover.addEventListener("toggle", () => {
  //...
});

popover.showPopover();
popover.hidePopover();
// `toggle` only fires once

Weitere Beispiele

Spezifikationen

Specification
HTML
# event-toggle

Browser-Kompatibilität

Siehe auch