<dialog> : l'élément de boîte de dialogue

L'élément HTML <dialog> représente une boite de dialogue ou un composant interactif (par exemple un inspecteur ou une fenêtre).

Catégories de contenu Contenu de flux, racine de sectionnement.
Contenu autorisé Contenu de flux.
Omission de balises Aucune, la balise d'ouverture et la balise de fermeture sont obligatoires.
Parents autorisés Tout élément qui accepte du contenu de flux.
Rôle ARIA implicite dialog
Rôles ARIA autorisés alertdialog
Interface DOM HTMLDialogElement

Attributs

Cet élément inclut les attributs universels.

L'attribut tabindex ne doit pas être utilisé sur l'élément <dialog>.

open
Cet attribut indique que la boîte de dialogue est active et peut être utilisée de façon interactive. Si l'attribut n'est pas renseigné, la boîte de dialogue ne doit pas être présentée à l'utilisateur.

Notes d'utilisation

  • Les éléments <form> peuvent fermer un dialogue s'ils possèdent l'attribut method="dialog". Lorsqu'un tel formulaire est soumis, le dialogue se ferme avec sa propriété returnValue (en-US) définie sur la value (valeur) du bouton qui a été utilisé pour soumettre le formulaire.
  • Le pseudo-élément CSS ::backdrop peut être utilisé pour créer un style derrière un élément <dialog> lorsque le dialogue est affiché avec HTMLDialogElement.showModal() (en-US). Par exemple, pour atténuer le contenu inaccessible derrière la boîte de dialogue modale.

Exemples

Exemple simple

<dialog open>
  <p>Salutations, à tous et à toutes !</p>
</dialog>

Exemple avancé

HTML

<!-- Boîte de dialogue contextuelle simple contenant un formulaire -->
<dialog id="favDialog">
  <form method="dialog">
    <p><label>Animal préféré :
      <select>
        <option></option>
        <option>Crevette en saumure</option>
        <option>Panda rouge</option>
        <option>Singe-araignée</option>
      </select>
    </label></p>
    <menu>
      <button value="cancel">Annuler</button>
      <button id="confirmBtn" value="default">Confirmer</button>
    </menu>
  </form>
</dialog>

<menu>
  <button id="updateDetails">Mettre à jour les détails</button>
</menu>

<output aria-live="polite"></output>

JavaScript

let updateButton = document.getElementById('updateDetails');
let favDialog = document.getElementById('favDialog');
let outputBox = document.querySelector('output');
let selectEl = document.querySelector('select');
let confirmBtn = document.getElementById('confirmBtn');

// Le bouton "Mettre à jour les détails" ouvre le <dialogue> ; modulaire
updateButton.addEventListener('click', function onOpen() {
  if (typeof favDialog.showModal === "function") {
    favDialog.showModal();
  } else {
    console.error("L'API <dialog> n'est pas prise en charge par ce navigateur.");
  }
});
// L'entrée "Animal favori" définit la valeur du bouton d'envoi.
selectEl.addEventListener('change', function onSelect(e) {
  confirmBtn.value = selectEl.value;
});
// Le bouton "Confirmer" du formulaire déclenche la fermeture
// de la boîte de dialogue en raison de [method="dialog"]
favDialog.addEventListener('close', function onClose() {
  outputBox.value = favDialog.returnValue + " bouton cliqué - " + (new Date()).toString();
});

Résultat

Spécifications

Specification
HTML Standard (HTML)
# the-dialog-element

Compatibilité des navigateurs

BCD tables only load in the browser

Prothèse d'émulation (polyfill)

Incluez ce polyfill pour fournir un support aux navigateurs sans élément <dialog> : dialog-polyfill.

Voir aussi