Spec-Zone.ru › Web APIs

HTMLDialogElement: метод showModal()

Базовая Широко доступна

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с марта 2022 года.

  • Подробнее
  • Полная совместимость
  • Отправить отзыв

Метод showModal() интерфейса HTMLDialogElement отображает диалоговое окно как модальное поверх любых других диалоговых окон, которые могут быть открыты. Он отображается в верхнем слое вместе с псевдоэлементом ::backdrop. Взаимодействие вне диалогового окна заблокировано, и содержимое за его пределами становится неактивным.

Синтаксис

showModal()

Параметры

Нет.

Возвращаемое значение

Ничего (undefined).

Исключения

InvalidStateError DOMException

Выбрасывается, если диалоговое окно уже открыто (то есть, если атрибут 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API