HTMLDialogElement: showModal() Methode

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2022.

Die showModal() Methode der HTMLDialogElement Schnittstelle zeigt den Dialog als Modal über allen anderen möglicherweise vorhandenen Dialogen an. Es wird in der oberen Ebene zusammen mit einem ::backdrop Pseudo-Element angezeigt. Elemente innerhalb desselben Dokuments wie der Dialog, außer dem Dialog selbst und seinen Nachkommen, werden inert (als ob das inert Attribut festgelegt wäre). Nur das enthaltende Dokument wird blockiert; wenn der Dialog in einem iframe gerendert wird, bleibt der Rest der Seite interaktiv.

Syntax

js
showModal()

Parameter

Keine.

Rückgabewert

Keiner (undefined).

Ausnahmen

InvalidStateError DOMException

Wird ausgelöst, wenn der Dialog bereits geöffnet und nicht modal ist (d.h. wenn der Dialog bereits mit HTMLDialogElement.show() geöffnet wurde).

Beispiele

Öffnen eines modalen Dialogs

Das folgende Beispiel zeigt einen Button, der beim Klicken ein modales <dialog> mit einem Formular über die HTMLDialogElement.showModal() Funktion öffnet. Während es geöffnet ist, ist alles außer dem Inhalt des modalen Dialogs inert. Von dort aus können Sie auf den Abbrechen-Button klicken, um den Dialog über die HTMLDialogElement.close() Funktion zu schließen, oder das Formular über den Abschicken-Button einreichen. Durch Drücken des Abbrechen-Buttons wird der Dialog geschlossen, wodurch ein close Ereignis und kein cancel Ereignis erzeugt wird.

HTML

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

js
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);
});

Ergebnis

Spezifikationen

Specification
HTML
# dom-dialog-showmodal-dev

Browser-Kompatibilität

Siehe auch

  • Das HTML-Element, das diese Schnittstelle implementiert: <dialog>.