Citation de l'article Section sur l'extensibilité de la spécification HTML5 :
Pour les fonctions de balisage qui peuvent être limitées à la sérialisation XML et ne doivent pas être prises en charge dans la sérialisation HTML, les vendeurs doivent utiliser le mécanisme d'espace de noms pour définir des espaces de noms personnalisés dans lesquels les éléments et attributs non standard sont pris en charge.
Ainsi, si vous utilisez la sérialisation XML de HTML5, il est légal pour vous de faire quelque chose comme ceci :
<greeting xmlns="http://example.com/customNamespace">Hello!</greeting>
Cependant, si vous utilisez la syntaxe HTML, vous êtes beaucoup plus limité dans ce que vous pouvez faire.
Pour les caractéristiques de niveau balistique destinées à être utilisées avec la syntaxe HTML, les extensions doivent être limitées à de nouveaux attributs de la forme "x-vendor-feature" [...] De nouveaux noms d'éléments ne doivent pas être créés.
Mais ces instructions s'adressent principalement aux vendeurs de navigateurs, qui sont censés fournir un style visuel et des fonctionnalités pour les éléments personnalisés qu'ils choisissent de créer.
Pour un auteur, cependant, bien qu'il soit légal d'incorporer un élément personnalisé dans la page (au moins dans la sérialisation XML), vous n'obtiendrez rien de plus qu'un nœud dans le DOM. Si vous voulez que votre élément personnalisé fasse quelque chose, ou qu'il soit rendu d'une manière spéciale, vous devriez vous tourner vers la classe Spécification des éléments personnalisés .
Pour une introduction plus douce sur le sujet, lisez le document suivant Introduction aux composants Web qui comprend également des informations sur le Shadow DOM et d'autres spécifications connexes. Ces spécifications sont encore à l'état d'ébauches pour le moment - vous pouvez voir le statut actuel ici - mais ils sont activement développés.
À titre d'exemple, une définition simple d'un greeting
pourrait ressembler à ceci :
<element name="greeting">
<template>
<style scoped>
span { color:gray; }
</style>
<span>Simon says:</span>
<q><content/></q>
</template>
</element>
Cela indique au navigateur de rendre le contenu de l'élément entre guillemets et préfixé par le texte "Simon says :" qui est stylisé avec la couleur grise. En règle générale, une définition d'élément personnalisée comme celle-ci est stockée dans un fichier html distinct que vous importez à l'aide d'un lien.
<link rel="import" href="greeting-definition.html" />
Bien que vous puissiez également l'inclure en ligne si vous le souhaitez.
J'ai créé une démonstration fonctionnelle de la définition ci-dessus en utilisant la bibliothèque Polymer polyfill. ici . Notez que ceci utilise une ancienne version de la bibliothèque Polymer - les versions plus récentes fonctionnent différemment. Cependant, la spécification étant toujours en cours de développement, je ne recommanderais pas d'utiliser cette méthode dans un code de production.
2 votes
Vous ne devriez pas accorder trop d'importance à un article sur le HTML5 écrit il y a plus de 4,5 ans.
9 votes
L'article de Crockford est étrange. La phrase importante est la suivante : "Il s'agit ma proposition pour un HTML 5 plus doux". En d'autres termes, il ne s'agit pas du HTML5 que nous connaissons aujourd'hui, mais d'une proposition pour un HTML 5 différent qui succéderait au HTML 4. C'est étrange, car cette proposition est datée de novembre 2007, alors que le W3C travaillait déjà sur le HTML5 depuis près d'un an. L'utilisation qu'il fait du mot "autorisé" est source de confusion. Les balises personnalisées n'ont jamais été "conformes"/"valides", mais les analyseurs syntaxiques des navigateurs continuent de fonctionner en leur présence. Quoi qu'il en soit, la proposition de Crockford n'a pas eu de succès. Pratiquement aucune partie de cette proposition n'a été incorporée dans le HTML5.
3 votes
Les éléments personnalisés sont de plus en plus nombreux maintenant que la norme émergente W3 pour les composants Web Custom Elements commence à apparaître dans Firefox et Chrome : dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/custom/
3 votes
Quant à Douglas Crockford, je suis tenté de croire tout ce qu'il dit.
0 votes
w3.org/TR/composants-intro/#defining-a-custom-element
1 votes
Tableau de support des navigateurs web pour les éléments personnalisés caniuse.com/#feat=éléments personnalisés
0 votes
Connexes : La bonne façon d'appliquer le CSS aux éléments HTML5 personnalisés
0 votes
Comme je l'ai souligné dans ma réponse à une question similaire certains navigateurs ne réagissent pas bien au fait de créer ses propres noms de balises. (Dans l'exemple, les noms arbitraires semblent corrects dans Chrome et Firefox, mais pas dans IE et Edge).