[go: up one dir, main page]

Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in English Always switch to English

HTMLDialogElement : méthode showModal()

Baseline Widely available

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

La méthode showModal() de l'interface HTMLDialogElement affiche la boîte de dialogue en mode modal, au-dessus de toute autre boîte de dialogue présente. Elle s'affiche dans la couche supérieure, accompagnée d'un pseudo-élément ::backdrop. Les éléments du même document que la boîte de dialogue, à l'exception de celle-ci et de ses descendants, deviennent inertes (comme si l'attribut inert était spécifié). Seul le document contenant est bloqué : si la boîte de dialogue est affichée dans une iframe, le reste de la page reste interactif.

Syntaxe

js
showModal()

Paramètres

Aucun.

Valeur de retour

Aucune (undefined).

Exceptions

InvalidStateError DOMException

Levée si la boîte de dialogue est déjà ouverte et non modale (c'est-à-dire si elle a déjà été ouverte avec HTMLDialogElement.show()).

Exemples

Ouvrir une boîte de dialogue modale

L'exemple suivant montre un bouton qui, lorsqu'il est cliqué, ouvre une boîte de dialogue modale <dialog> contenant un formulaire via la fonction HTMLDialogElement.showModal(). Lorsque la boîte de dialogue est ouverte, tout le reste du contenu du document devient inerte. Vous pouvez alors cliquer sur le bouton Annuler pour fermer la boîte de dialogue (via la fonction HTMLDialogElement.close()), ou soumettre le formulaire avec le bouton de validation. Sélectionner le bouton d'annulation ferme la boîte de dialogue et déclenche un événement close, mais pas un événement cancel.

HTML

html
<!-- boîte de dialogue contextuelle contenant un formulaire -->
<dialog id="favDialog">
  <form method="dialog">
    <p>
      <label for="favAnimal">Animal préféré&nbsp;:</label>
      <select id="favAnimal" name="favAnimal">
        <option></option>
        <option>Crevette de saumure</option>
        <option>Panda roux</option>
        <option>Singes-araignées</option>
      </select>
    </p>
    <div>
      <button id="cancel" type="reset">Annuler</button>
      <button type="submit">Valider</button>
    </div>
  </form>
</dialog>

<div>
  <button id="updateDetails">Mettre à jour les informations</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");
  }
}

// Le bouton met à jour ouvre la boîte de dialogue modale
updateButton.addEventListener("click", () => {
  dialog.showModal();
  openCheck(dialog);
});

// Le bouton annuler du formulaire ferme la boîte de dialogue
cancelButton.addEventListener("click", () => {
  dialog.close("animalNotChosen");
  openCheck(dialog);
});

Résultat

Spécifications

Specification
HTML
# dom-dialog-showmodal-dev

Compatibilité des navigateurs

Voir aussi

  • Élément HTML implémentant cette interface :