HTMLElement: событие toggle
Базовая Широко поддерживается *
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с января 2020 года.
* Некоторые части этой функции могут иметь различный уровень поддержки.
Событие toggle интерфейса HTMLElement срабатывает на элементе поповера, элементе <dialog> или элементе <details> сразу после того, как он отобразился или скрылся.
- Если элемент переходит от скрытого к отображаемому, свойство
event.oldStateбудет установлено вclosed, а свойствоevent.newStateбудет установлено вopen. - Если элемент переходит от отображаемого к скрытому, тогда
event.oldStateбудетopen, аevent.newStateбудетclosed.
Это событие не является отменяемым.
Синтаксис
Используйте имя события в методах, таких как addEventListener(), или установите свойство обработчика событий.
addEventListener("toggle", (event) => {});
ontoggle = (event) => {};
Тип события
A ToggleEvent. Наследуется от Event.
Примеры
Приведенный ниже пример кода демонстрирует, как событие toggle может использоваться для поповера. Тот же код может использоваться для элементов <dialog> или <details> аналогичным образом.
Базовый пример
Этот пример демонстрирует, как прослушать событие toggle и вывести результат.
HTML
HTML состоит из поповера и кнопки для его открытия и закрытия.
<button popovertarget="mypopover">Toggle the popover</button> <div id="mypopover" popover>Popover content</div>
JavaScript
Код добавляет обработчик события toggle и выводит состояние.
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");
}
});
Результат
Примечание о слиянии событий toggle
Если несколько событий toggle срабатывают до того, как цикл событий успевает выполнить свой цикл, будет выполнено только одно событие. Это называется «слиянием событий».
Например:
popover.addEventListener("toggle", () => {
//...
});
popover.showPopover();
popover.hidePopover();
// `toggle` only fires once
Другие примеры
-
Открытие модального диалогового окна пример в
HTMLDialogElement
Спецификации
| Спецификация |
|---|
| HTML # event-toggle |
Совместимость с браузерами
| Рабочий стол | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
toggle_event |
36 | 79 | 49 | 23 | 10.1 | 36 | 49 | 24 | 10.3 | 3.0 | 37 |
details_elements |
36 | 79 | 49 | 23 | 10.1 | 36 | 49 | 24 | 10.3 | 3.0 | 37 |
dialog_elements |
132 | 132 | 133 | 117 | Нет | 132 | 133 | Нет | Нет | Нет | 132 |
popover_elements |
114 | 114 | 125 | 100 | 17 | 114 | 125 | 76 | 17 | 23.0 | 114 |
См. также
-
popoverГлобальное атрибут HTML - API поповера
- Связанное событие:
beforetoggle
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/toggle_event