L'élément HTML <dialog>
représente une boite de dialogue ou un composant interactif (par exemple un inspecteur ou une fenêtre).
Attributes
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
- L'élément
<form>
peut être intégré dans une boîte de dialogue en spécifiant l'attribut
. Lorsqu'un formulaire de ce type est envoyé, la boîte de dialogue est fermée avec un attributmethod="dialog
"returnValue
mis à jour avec la valeurvalue
du bouton d'envoi utilisé. - Le pseudo-élément CSS
::backdrop
peut être utilisé pour mettre en forme l'arrière plan d'un élément<dialog>
. On peut par exemple estomper un contenu inaccessible pendant que la boîte de dialogue est active. Cette ombre portée est uniquement dessinée lorsque l'élément<dialog>
est affiché viaHTMLDialogElement.showModal()
.
Exemples
HTML
<!-- Une boîte de dialogue qui contient un formulaire -->
<dialog id="favDialog">
<form method="dialog">
<p><label>Animal préféré :
<select>
<option></option>
<option>Panda roux</option>
<option>Macrotus</option>
<option>Koala</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
(function() {
var updateButton = document.getElementById('updateDetails');
var favDialog = document.getElementById('favDialog');
var outputBox = document.getElementsByTagName('output')[0];
var selectEl = document.getElementsByTagName('select')[0];
var confirmBtn = document.getElementById('confirmBtn');
// Le bouton "mettre à jour les détails" ouvre la boîte de dialogue
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 votre navigateur");
}
});
// Le champ "animal préféré" définit la valeur pour le bouton submit
selectEl.addEventListener('change', function onSelect(e) {
confirmBtn.value = selectEl.value;
});
// Le bouton "Confirmer" déclenche l'évènement "close" sur le dialog avec [method="dialog"]
favDialog.addEventListener('close', function onClose() {
outputBox.value = "Vous avez cliqué sur le bouton " + favDialog.returnValue + " !";
});
})();
Résultat
Résumé technique
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ôles ARIA autorisés | alertdialog |
Interface DOM | HTMLDialogElement |
Prothèse d'émulation (polyfill)
Cette prothèse peut être utilisée pour fournir un support pour les navigateurs : dialog-polyfill.
Spécifications
Spécification | État | Commentaires |
---|---|---|
HTML Living Standard La définition de '<dialog>' dans cette spécification. |
Standard évolutif | |
HTML 5.2 La définition de '<dialog>' dans cette spécification. |
Recommendation | Définition initiale. |
Compatibilité des navigateurs
BCD tables only load in the browser
Ce tableau de compatibilité a été généré à partir de données structurées. Si vous souhaitez contribuer à ces données, n'hésitez pas à envoyer une pull request sur https://github.com/mdn/browser-compat-data.
Voir aussi
- L'évènement
close
- L'évènement
cancel
- Guide sur les formulaires HTML
- Le pseudo-élément
::backdrop