Zusammenfassung

  • Das W3C veröffentlichte am 14. Mai 2013 den ersten öffentlichen Custom-Elements-Entwurf. Ein Entwurf von 2016 behandelte Klassen, Register, die Aufwertung vorhandener Elemente und Lebenszyklus-Callbacks; eine Note von 2018 dokumentierte die Aufnahme der Regeln in DOM und HTML.
  • Im heutigen HTML-Standard registrieren Autoren Definitionen in einem CustomElementRegistry. Der Browser erkennt geeignete Elemente, wertet sie auf und löst Reaktionen bei Verbindung, Entfernung und Änderungen beobachteter Attribute aus.

Eine Redaktion möchte eine Karte für Bild, Überschrift und Link. Sie könnte auf jeder Seite alle Karten suchen und von einem allgemeinen Skript vorbereiten lassen. Oder sie gibt der Karte einen eigenen Namen und eine Definition, die der Browser beim Eintreffen der Karte wiederfindet. Die zweite Lösung lässt die Arbeit beim Element wohnen, statt einen Inspektor durch jede Seite zu schicken.

Der erste öffentliche W3C-Arbeitsentwurf vom 14. Mai 2013 schlug vor, dass Autoren neue Arten von DOM-Elementen definieren können. Sein frühes Modell verband Namen, Prototypen und Lebenszyklus-Callbacks. Einzelheiten änderten sich später. Die Arbeitsteilung war bereits da: Der Browser ordnet den neuen Typ in das Dokument ein, der Autor bestimmt sein Verhalten.

Der W3C-Entwurf vom 9. Juni 2016 zeigt ein vertrauteres Verfahren. Eine Klasse erweitert HTMLElement und wird mit customElements.define() angemeldet. Ein Beispiel im Text hat ein Element schon im Dokument, bevor seine Definition angemeldet wird. Nach der Anmeldung wird die passende Instanz aufgewertet. Der Arbeitsplatz kann eingerichtet sein, bevor die Anleitung dafür eintrifft.

Das Register prüft Namen und koordiniert Aufwertung und Reaktionen. Der Bindestrich im Namen eines autonomen Custom Elements hält Platz für von Autoren erfundene Tags frei. Eine Klasse nennt Attribute, deren Änderungen sie beobachten möchte. attributeChangedCallback() verarbeitet diese Änderungen, connectedCallback() begleitet das Einfügen in ein verbundenes Dokument, disconnectedCallback() das Entfernen. Der Browser verwaltet den Zeitpunkt dieser Aufrufe nach seinen Reaktionsregeln.

Das Element kann mehrmals ein- und austreten. Es erscheint womöglich schon im HTML, wird später aufgewertet und danach verschoben oder erneut verbunden. Der Autor muss Methoden schreiben, die mit diesem wirklichen Lebenslauf zurechtkommen. Der Browser stellt Identität und Termine bereit; die Redaktion entscheidet, was die Karte mit Überschrift und Bild macht. Die Personalabteilung schreibt keine Nachrichtenartikel.

Die eigenständige Spezifikation zog um. Die W3C-Arbeitsgruppennote vom 3. Mai 2018 erklärt, dass Custom-Elements-Inhalte in DOM, HTML und verwandte Spezifikationen eingearbeitet wurden. Die W3C-Veröffentlichungsgeschichte bewahrt den Weg seit 2013. Im heutigen Custom-Elements-Kapitel des WHATWG HTML Living Standard stehen Register, Namensprüfungen, Aufwertungen und Reaktionswarteschlangen. Das Kapitel behandelt auch später entwickelte Fälle wie Adoption und Formulare.

Shadow DOM organisiert einen inneren Baum und dessen Zusammenspiel mit der Seite. Custom Elements organisiert die Identität und den Lebenslauf des Tags. Eine Nachrichtenkarte kann beides nutzen: Der eine Mechanismus plant gegebenenfalls ihre Räume, der andere gibt ihr Dienstausweis und Arbeitsbeginn.