<template>
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since November 2015.
L'élément HTML <template>
(ou Template Content ou modèle de contenu) est un mécanisme utilisé pour stocker du contenu HTML (côté client) qui ne doit pas être affiché lors du chargement de la page mais qui peut être instancié et affiché par la suite grâce à un script JavaScript.
Cet élément est un fragment de contenu mis de côté pour être utilisé par la suite dans le document. Lorsque le moteur traite le contenu de l'élément <template>
lors du chargement de la page, il ne fait que vérifier la validité du contenu, ce dernier n'est pas affiché.
Attributs
Cet élément inclut uniquement les attributs universels.
Exemples
HTML
<table id="producttable">
<thead>
<tr>
<td>UPC_Code</td>
<td>Product_Name</td>
</tr>
</thead>
<tbody>
<!-- existing data could optionally be included here -->
</tbody>
</table>
<template id="productrow">
<tr>
<td class="record"></td>
<td></td>
</tr>
</template>
Au début, on a un tableau HTML pour lequel on insèrera du contenu plus tard grâce à l'aide d'un script JavaScript. Ensuite, on a le template qui décrit la structure du fragment HTML représentant une ligne de tableau.
JavaScript
Avec le tableau créé et le template défini, on utilise JavaScript pour insérer des lignes dans le tableau dont chacune est construite à partir du template.
// On vérifie si le navigateur prend en charge
// l'élément HTML template en vérifiant la présence
// de l'attribut content pour l'élément template.
if ("content" in document.createElement("template")) {
// On prépare une ligne pour le tableau
var template = document.querySelector("#productrow");
// On clone la ligne et on l'insère dans le tableau
var tbody = document.querySelector("tbody");
var clone = document.importNode(template.content, true);
var td = clone.querySelectorAll("td");
td[0].textContent = "1235646565";
td[1].textContent = "Stuff";
tbody.appendChild(clone);
// On fait de même pour une autre ligne
var clone2 = document.importNode(template.content, true);
td = clone2.querySelectorAll("td");
td[0].textContent = "0384928528";
td[1].textContent = "Acme Kidney Beans";
// Puis on insère
tbody.appendChild(clone2);
} else {
// Une autre méthode pour ajouter les lignes
// car l'élément HTML n'est pas pris en charge.
}
Résultat
Le résultat correspond au tableau HTML original avec deux lignes supplémentaires qui ont été ajoutées grâce au code JavaScript :
Résumé technique
Catégories de contenu | Contenu de méta-données, contenu de flux, contenu phrasé, élément destiné aux scripts. |
---|---|
Contenu autorisé | Pas de restriction. |
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 méta-données, du
contenu phrasé, ou
des éléments destinés aux scripts. L'élément <colgroup> est également autorisé
s'il n'a pas l'attribut
span .
|
Rôles ARIA autorisés | Aucun. |
Interface DOM | HTMLTemplateElement |
Spécifications
Specification |
---|
HTML Standard # the-template-element |
Compatibilité des navigateurs
BCD tables only load in the browser