HTMLElement: toggle event
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.oldState
property will be set toclosed
and theevent.newState
property will be set toopen
. - If the element is transitioning from showing to hidden, then
event.oldState
will beopen
andevent.newState
will beclosed
.
This event is not cancelable.
Syntax
Use the event name in methods like addEventListener()
, or set an event handler property.
js
addEventListener("toggle", (event) => {});
ontoggle = (event) => {};
Event type
A ToggleEvent
. Inherits from Event
.
Examples
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.
html
<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.
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");
}
});
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:
js
popover.addEventListener("toggle", () => {
//...
});
popover.showPopover();
popover.hidePopover();
// `toggle` only fires once
Other examples
- Opening a modal dialog example in
HTMLDialogElement
Specifications
Specification |
---|
HTML Standard # event-toggle |
Browser compatibility
BCD tables only load in the browser
See also
popover
HTML global attribute- Popover API
- Related event:
beforetoggle