HTMLElement: метод togglePopover()
Метод togglePopover() интерфейса HTMLElement переключает элемент попапа (т.е. элемент, у которого есть допустимое значение атрибута popover) между скрытым и видимым состояниями.
При вызове togglePopover() для элемента с атрибутом popover:
- Срабатывает событие
beforetoggle. - Попап переключается между скрытым и видимым состояниями:
- Если он был первоначально видимым, он переключается на скрытый.
- Если он был первоначально скрытым, он переключается на видимый.
- Срабатывает событие
toggle.
Синтаксис
togglePopover(force)
Параметры
force-
Булево значение, которое заставляет
togglePopover()вести себя какshowPopover()илиhidePopover(), за исключением того, что оно не выбрасывает исключение, если попап уже находится в целевом состоянии.- Если установлено в
true, попап отображается, если он был первоначально скрытым. Если он был первоначально видимым, ничего не происходит. - Если установлено в
false, попап скрывается, если он был первоначально видимым. Если он был первоначально скрытым, ничего не происходит.
- Если установлено в
Возвращаемое значение
true если попап открыт после вызова, и false в противном случае.
None (undefined) может быть возвращено в более старых версиях браузера (см. совместимость с браузерами).
Примеры
См. страницу примеров API попапов для доступа к полному набору примеров попапов MDN.
Простой автопопап
Это немного изменённая версия примера попапа Toggle Help UI. Пример переключает попап включение и выключение нажатием определённой клавиши на клавиатуре (когда окно примера имеет фокус).
Ниже показан HTML для примера. Этот первый элемент определяет инструкции по вызову попапа, которые нам нужны, потому что попапы скрыты по умолчанию.
<p id="instructions"> Press "h" to toggle a help screen (select example window first). </p>
Затем мы определяем элемент <div>, который является попапом. Фактическое содержимое не имеет значения, но обратите внимание, что нам нужен атрибут popover, чтобы превратить <div> в попап, чтобы он был скрыт по умолчанию (или мы можем установить этот элемент в JavaScript).
<div id="mypopover" popover>
<h2>Help!</h2>
<p>You can use the following commands to control the app</p>
<ul>
<li>Press <ins>C</ins> to order cheese</li>
<li>Press <ins>T</ins> to order tofu</li>
<li>Press <ins>B</ins> to order bacon</li>
</ul>
</div>
Ниже показан JavaScript для примера. Сначала мы проверяем, поддерживаются ли попапы, и если нет, скрываем попап div, чтобы он не отображался в строке.
const instructions = document.getElementById("instructions");
const popover = document.getElementById("mypopover");
if (!HTMLElement.prototype.hasOwnProperty("popover")) {
popover.innerText = "";
instructions.innerText = "Popovers not supported";
}
Если попапы поддерживаются, мы добавляем слушатель для нажатия клавиши h, чтобы использовать его для открытия попапа. Мы также записываем, был ли попап открыт или закрыт после вызова, но только если возвращалось значение true или false.
if (HTMLElement.prototype.hasOwnProperty("popover")) {
document.addEventListener("keydown", (event) => {
if (event.key === "h") {
const popupOpened = popover.togglePopover();
// Check if popover is opened or closed on supporting browsers
if (popupOpened !== undefined) {
instructions.innerText +=
popupOpened === true ? `\nOpened` : `\nClosed`;
}
}
});
}
Вы можете протестировать это с помощью живого примера ниже.
Спецификации
| Спецификация |
|---|
| HTML # dom-togglepopover |
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari на IOS | Samsung Internet | WebView Android | |
togglePopover |
114 | 114 | 125 | 100 | 17 | 114 | 125 | 76 | 17 | 23.0 | 114 |
returns_boolean |
116 | 116 | 125 | 102 | 17 | 116 | 125 | 78 | 17 | 24.0 | 116 |
См. также
-
popoverГлобальный атрибут HTML - API попапов
© 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/togglePopover