HTMLDialogElement: метод showModal()
Базовая Широко доступна
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с марта 2022 года.
Метод showModal() интерфейса HTMLDialogElement отображает диалоговое окно как модальное поверх любых других диалоговых окон, которые могут быть открыты. Он отображается в верхнем слое вместе с псевдоэлементом ::backdrop. Взаимодействие вне диалогового окна заблокировано, и содержимое за его пределами становится неактивным.
Синтаксис
showModal()
Параметры
Нет.
Возвращаемое значение
Ничего (undefined).
Исключения
-
InvalidStateErrorDOMException -
Выбрасывается, если диалоговое окно уже открыто (то есть, если атрибут
openуже установлен на элементе<dialog>) или если диалоговое окно также является поп-овер, который уже отображается.
Примеры
Открытие модального диалогового окна
Следующий пример демонстрирует кнопку, которая при нажатии открывает модальное <dialog> окно, содержащее форму, с помощью функции HTMLDialogElement.showModal(). Пока окно открыто, все, кроме содержимого модального диалогового окна, неактивно. Оттуда можно нажать кнопку Отмена для закрытия диалогового окна (с помощью функции HTMLDialogElement.close()) или отправить форму с помощью кнопки отправки. Выбор кнопки отмены закрывает диалоговое окно, вызывая событие close, а не cancel события.
HTML
<!-- pop-up dialog box, containing a form -->
<dialog id="favDialog">
<form method="dialog">
<p>
<label for="favAnimal">Favorite animal:</label>
<select id="favAnimal" name="favAnimal">
<option></option>
<option>Brine shrimp</option>
<option>Red panda</option>
<option>Spider monkey</option>
</select>
</p>
<div>
<button id="cancel" type="reset">Cancel</button>
<button type="submit">Confirm</button>
</div>
</form>
</dialog>
<div>
<button id="updateDetails">Update details</button>
</div>
JavaScript
const updateButton = document.getElementById("updateDetails");
const cancelButton = document.getElementById("cancel");
const dialog = document.getElementById("favDialog");
dialog.returnValue = "favAnimal";
function openCheck(dialog) {
if (dialog.open) {
console.log("Dialog open");
} else {
console.log("Dialog closed");
}
}
// Update button opens a modal dialog
updateButton.addEventListener("click", () => {
dialog.showModal();
openCheck(dialog);
});
// Form cancel button closes the dialog box
cancelButton.addEventListener("click", () => {
dialog.close("animalNotChosen");
openCheck(dialog);
});
Результат
Спецификации
| Спецификация |
|---|
| HTML # dom-dialog-showmodal-dev |
Совместимость браузеров
| Рабочий стол | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
showModal |
37 | 79 | 98 | 24 | 15.4 | 37 | 98 | 24 | 15.4 | 3.0 | 37 |
См. также
- Элемент HTML, реализующий этот интерфейс:
<dialog>.
© 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/HTMLDialogElement/showModal