HTMLElement: toggle event
Baseline
Widely available
*
This feature is well established and works across many devices and browser versions. It’s been available across browsers since Januar 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, nachdem es angezeigt oder verborgen wurde, ausgelöst.
- Wenn das Element vom Zustand "verborgen" zu "angezeigt" wechselt, wird die Eigenschaft
event.oldStateaufclosedund die Eigenschaftevent.newStateaufopengesetzt. - Wenn das Element vom Zustand "angezeigt" zu "verborgen" wechselt, ist
event.oldStateopenundevent.newStateclosed.
Dieses Ereignis ist nicht abbrufbar.
Syntax
Verwenden Sie den Ereignisnamen in Methoden wie addEventListener() oder setzen Sie eine Ereignishandler-Eigenschaft.
addEventListener("toggle", (event) => { })
ontoggle = (event) => { }
Ereignistyp
Ein ToggleEvent. Erbt von Event.
Beispiele
Das folgende Beispielcode zeigt, wie das toggle-Ereignis bei einem Popover verwendet werden kann.
Der gleiche Code kann auf dieselbe Weise für <dialog>- oder <details>-Elemente verwendet werden.
Einfaches Beispiel
Dieses Beispiel zeigt, wie man auf das toggle-Ereignis hört und das Ergebnis protokolliert.
HTML
Das HTML besteht aus einem Popover und einem Button, mit dem es geöffnet und geschlossen werden kann.
<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 Status.
const popover = document.getElementById("mypopover");
popover.addEventListener("toggle", (event) => {
if (event.newState === "open") {
log("Popover has been shown");
} else {
log("Popover has been hidden");
}
});
Ergebnis
Eine Anmerkung zur Zusammenfassung von Toggle-Ereignissen
Wenn mehrere toggle-Ereignisse ausgelöst werden, bevor die Ereignisschleife eine Chance hat, einen Zyklus durchzuführen, wird nur ein einziges Ereignis ausgelöst.
Dies wird als "Ereigniscoalescen" bezeichnet.
Zum Beispiel:
popover.addEventListener("toggle", () => {
// …
});
popover.showPopover();
popover.hidePopover();
// `toggle` only fires once
Weitere Beispiele
- Öffnen eines modalen Dialogs Beispiel in
HTMLDialogElement
Spezifikationen
| Specification |
|---|
| HTML> # event-toggle> |
Browser-Kompatibilität
Siehe auch
popoverHTML-Globalattribut- Popover API
- Verwandtes Ereignis:
beforetoggle