Es gibt ein paar Dinge über die anderen Antworten, die entweder nur schlecht formuliert sind oder vielleicht etwas falsch sind.
Falsch (ISH): Nicht standardmäßige HTML-Elemente sind "nicht erlaubt", "illegal" oder "ungültig".
Nicht unbedingt. Sie sind "Nicht konform". Was ist der Unterschied? Etwas kann "nicht anpassen" und trotzdem "erlaubt" sein. Der W3C schickt die HTML -Polizei nicht nach Hause und schleppt Sie weg.
Der W3C hat die Dinge aus einem bestimmten Grund so gelassen. Konformität und Spezifikationen werden von einer Gemeinschaft definiert. Wenn Sie zufällig eine kleinere Community haben, die HTML für genauere Zwecke verbraucht und sie alle auf einige neue Elemente einverstanden sind, die sie benötigen, um die Dinge zu erleichtern, können sie das haben, was der W3C als AS bezieht "Andere anwendbare Spezifikationen". (Dies ist offensichtlich eine grobe Vereinfachung, aber Sie haben die Idee)
Trotzdem erklären strenge Validatoren Ihre nicht standardmäßigen Elemente für "ungültig". Dies liegt jedoch daran, dass die Aufgabe des Validators darin besteht, die Übereinstimmung mit jeder Spezifikation zu gewährleisten, für die er validiert, und nicht um die "Rechtmäßigkeit" für die zu gewährleisten Browser oder für verwenden.
Falsch (ISH): Nicht standardmäßige HTML-Elemente Wille führen zu Problemen
Möglicherweise, aber unwahrscheinlich. (Ersetzen Sie "Will" durch "Macht") Dies sollte nur zu einem Rendering -Problem führen, wenn Ihr benutzerdefiniertes Element mit einer anderen Spezifikation in Konflikt steht, z. B. eine Änderung der HTML SVG, Mathematik oder etwas Brauch).
In der Tat, Der Grund, warum CSS nicht standardmäßige Tags stylen kann liegt daran, dass die HTML -Spezifikation Staaten eindeutig das:
Benutzeragenten müssen Elemente und Attribute behandeln, die sie nicht als semantisch neutral verstehen. Lassen Sie sie im DOM (für DOM -Prozessoren) und stylen Sie sie nach CSS (für CSS -Prozessoren), schließen Sie jedoch keine Bedeutung von ihnen ab
Notiz: Wenn Sie ein benutzerdefiniertes Tag verwenden möchten, denken Sie einfach an eine Änderung der HTML -Spezifikation zu einem späteren Zeitpunkt. Es ist wirklich unwahrscheinlich, dass der W3C die implementieren wird <imsocool>
Tag jedoch.
Nicht standardmäßige Tags und JavaScript (über die DOM)
Der Grund, warum Sie mit JavaScript auf benutzerdefinierte Elemente zugreifen und diese ändern können, ist, dass die Die Spezifikation spricht sogar darüber, wie sie im Dom behandelt werden sollten, Das ist die (wirklich schreckliche) API, mit der Sie die Elemente auf Ihrer Seite manipulieren können.
Die HTMLUNKNOWNELEMENT -Schnittstelle muss für HTML -Elemente verwendet werden, die nicht durch diese Spezifikation (oder andere anwendbare Spezifikationen) definiert sind.
TL; DR: Die Anpassung an die Spezifikation erfolgt für Kommunikation und Sicherheit. Nicht-Konformance ist immer noch von allem außer a zulässig Validator, dessen alleiniger Zweck es ist, die Konformität durchzusetzen, deren Verwendung jedoch optional ist.
Zum Beispiel:
var wee = document.createElement('wee');
console.log(wee.toString()); //[object HTMLUnknownElement]
(Ich bin sicher, das wird Flammen zeichnen, aber es gibt meine 2 Cent)