Signatur
Beschreibung
Die Eigenschaft cite des Interfaces HTMLModElement spiegelt das HTML-Attribut cite der Elemente <ins> und <del> wider. Sie enthält eine URL auf ein Dokument, das die Änderung begründet oder erläutert, zum Beispiel ein Ticket, einen Commit, ein Sitzungsprotokoll oder einen Änderungsvermerk.
Beim Lesen gibt der Browser die URL aufgelöst zurück, also relativ zur Basis-URL des Dokuments (document.baseURI) als absolute URL. Fehlt das Attribut, ist das Ergebnis ein leerer String. Beim Schreiben wird der zugewiesene String unverändert ins Attribut cite übernommen.
Typische Anwendungsfälle sind Änderungsverläufe in Rechtstexten, Wikis oder Dokumentationen: Per Skript lassen sich alle Änderungen samt Begründungslink einsammeln, als Tooltip oder Fußnote darstellen oder beim Anlegen neuer Änderungen automatisch mit einer Quelle versehen. Browser zeigen cite selbst nicht an, das Attribut ist reine Metainformation für Maschinen und Skripte.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $value | string | Nur beim Setzen: die URL (absolut oder relativ), die ins Attribut cite geschrieben wird. |
Rückgabewert
cite, oder ein leerer String, wenn das Attribut fehlt.Beispiele
cite auslesen (relative URL wird aufgelöst)
// HTML: <del id="alt" cite="/changelog#v2">Version 1.0</del>
// Seite liegt unter https://example.com/docs/
const del = document.getElementById('alt');
console.log(del.cite); // aufgelöste URL
console.log(del.getAttribute('cite')); // Rohwert aus dem Markup
Neue Änderung mit Begründungslink erzeugen
const markiereEinfuegung = (text, ticketId) => {
const ins = document.createElement('ins');
ins.textContent = text;
ins.cite = `https://tracker.example.com/issues/${ticketId}`;
ins.dateTime = new Date().toISOString();
return ins;
};
const absatz = document.querySelector('p');
absatz.append(' ', markiereEinfuegung('ab sofort auch per API verfügbar', 482));
console.log(absatz.lastElementChild.outerHTML);
Begründungslinks als Fußnoten sichtbar machen
// Alle <ins>/<del> mit cite um einen klickbaren Quellenlink ergänzen
document.querySelectorAll('ins[cite], del[cite]').forEach((el, i) => {
const link = document.createElement('a');
link.href = el.cite; // bereits absolute URL
link.textContent = `[${i + 1}]`;
link.title = el.tagName === 'INS' ? 'Grund der Einfügung' : 'Grund der Löschung';
el.after(link);
});
// Wichtig · Fallstricke
- Aufgelöst oder roh:
el.citeliefert immer die absolute URL. Wenn du den Wert genau so brauchst, wie er im Markup steht, nimmel.getAttribute('cite'). - Fehlendes Attribut: Ohne
cite-Attribut ist der Rückgabewert ein leerer String, nichtnull. Prüfe daher mitel.hasAttribute('cite'). - Keine Prüfung: Der Browser prüft nicht, ob die URL gültig oder erreichbar ist. Ungültige Werte werden beim Lesen unter Umständen unverändert zurückgegeben.
- Sicherheit: Wenn du
cite-Werte aus Nutzereingaben inhrefübernimmst, prüfe das Schema (z. B. nurhttps:). Sonst könnenjavascript:-URLs eingeschleust werden (XSS). - Nicht verwechseln:
<blockquote>und<q>haben ebenfalls eincite-Attribut, gehören aber zuHTMLQuoteElement. - Die Eigenschaft wird von allen modernen Browsern seit Langem unterstützt.