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 January 2020.
* Some parts of this feature may have varying levels of support.
The toggle event of the HTMLElement interface fires on a popover element, <dialog> element, or <details> element just after it is shown or hidden.
- If the element is transitioning from hidden to showing, the
event.oldStateproperty will be set toclosedand theevent.newStateproperty will be set toopen. - If the element is transitioning from showing to hidden, then
event.oldStatewill beopenandevent.newStatewill beclosed.
This event is not cancelable.
Syntax
Use the event name in addEventListener():
addEventListener("toggle", (event) => { })
Alternatively, assign to the event handler property of the interface:
ontoggle = (event) => { }
Event type
A ToggleEvent. Inherits from Event.
Examples
The example code below demonstrates how the toggle event might be used for popover.
The same code is might be used for a <dialog> or <details> elements in the same way.
Basic example
This example shows how to listen for the toggle event and log the result.
HTML
The HTML consists of a popover and a button for toggling it open and closed.
<button popovertarget="mypopover">Toggle the popover</button>
<div id="mypopover" popover>Popover content</div>
JavaScript
The code adds an event listener for the toggle event and logs the state.
const popover = document.getElementById("mypopover");
popover.addEventListener("toggle", (event) => {
if (event.newState === "open") {
log("Popover has been shown");
} else {
log("Popover has been hidden");
}
});
Result
A note on toggle event coalescing
If multiple toggle events are fired before the event loop has a chance to cycle, only a single event will be fired.
This is referred to as "event coalescing".
For example:
popover.addEventListener("toggle", () => {
// …
});
popover.showPopover();
popover.hidePopover();
// `toggle` only fires once
Other examples
- Opening a modal dialog example in
HTMLDialogElement
Specifications
| Specification |
|---|
| HTML> # event-toggle> |
Browser compatibility
See also
popoverHTML global attribute- Popover API
- Related event:
beforetoggle