Start · Sprachen · JavaScript · Referenz · Document.embeds

Document.embeds

Eigenschaft

Die schreibgeschützte Eigenschaft <code>document.embeds</code> liefert eine live aktualisierte <code>HTMLCollection</code> aller <code>&lt;embed&gt;</code>-Elemente im Dokument.

seit JavaScript Baseline: alle Browser Kategorie: webapi

Signatur

get Document.embeds

Beschreibung

document.embeds gibt eine HTMLCollection zurück, die alle <embed>-Elemente des aktuellen Dokuments in Dokumentreihenfolge enthält. Die Eigenschaft ist schreibgeschützt; die Sammlung selbst ist jedoch live. Fügt man also <embed>-Elemente hinzu oder entfernt sie, ändert sich die bereits abgerufene Sammlung automatisch mit.

Nützlich ist die Eigenschaft vor allem, wenn man eingebettete Inhalte wie PDFs, SVG-Dateien oder ältere Medienformate prüfen, zählen oder nachträglich anpassen will. Das kann z. B. bei einer Bereinigung, beim Nachladen mit loading-Logik oder bei Barrierefreiheitsprüfungen sein, wenn etwa ein fehlendes title-Attribut gesucht wird.

document.embeds ist ein Alias für document.plugins. Beide geben dieselbe Sammlung zurück. <object>- und <iframe>-Elemente gehören nicht dazu. Wer sie ebenfalls braucht, nimmt document.querySelectorAll("embed, object, iframe").

Rückgabewert

Typ
HTMLCollection
Beschreibung
Eine live aktualisierte HTMLCollection mit allen HTMLEmbedElement-Objekten des Dokuments. Gibt es keine, ist die Sammlung leer (length === 0).

Beispiele

Anzahl und Quellen aller embed-Elemente ausgeben

// HTML: <embed src="handbuch.pdf" type="application/pdf">
//       <embed src="logo.svg" type="image/svg+xml">
const embeds = document.embeds;
console.log(`Gefunden: ${embeds.length}`);

for (const embed of embeds) {
  console.log(embed.src, embed.type);
}
Gefunden: 2 https://example.com/handbuch.pdf application/pdf https://example.com/logo.svg image/svg+xml

Barrierefreiheit prüfen: embeds ohne title markieren

const ohneTitel = Array.from(document.embeds)
  .filter((embed) => !embed.title.trim());

ohneTitel.forEach((embed) => {
  embed.title = `Eingebetteter Inhalt: ${embed.type || 'unbekannt'}`;
  console.warn('title ergänzt für', embed.src);
});
title ergänzt für https://example.com/handbuch.pdf

Live-Verhalten der Sammlung

const embeds = document.embeds;
console.log(embeds.length); // z. B. 0

const neu = document.createElement('embed');
neu.src = 'diagramm.svg';
neu.type = 'image/svg+xml';
document.body.append(neu);

// Dieselbe Referenz ist automatisch aktualisiert
console.log(embeds.length);
console.log(document.embeds === document.plugins);
0 1 true

// Wichtig · Fallstricke

  • Live-Sammlung: Wer in einer Schleife über document.embeds Elemente entfernt, überspringt dabei Einträge, weil sich die Indizes verschieben. Deshalb vorher mit Array.from() oder dem Spread-Operator eine statische Kopie anlegen.
  • HTMLCollection ist kein Array. map, filter usw. gibt es nicht. for...of und item() bzw. Indexzugriff funktionieren aber. Auf benannte Einträge greift man mit namedItem() oder embeds["id"] zu.
  • Nur <embed> wird erfasst, <object> nicht. document.plugins ist ein identischer Alias und hat nichts mit navigator.plugins zu tun.
  • Plug-ins wie Flash werden nicht mehr unterstützt. <embed> ist heute vor allem für PDFs und SVGs relevant. Für Video und Audio sind <video> und <audio> vorzuziehen.
  • Sicherheit: Inhalte, die per <embed> eingebunden werden, lassen sich mit der CSP-Direktive object-src einschränken. Wer src dynamisch setzt, sollte nur vertrauenswürdige URLs verwenden.
  • Kompatibilität: Die Eigenschaft wird von allen modernen Browsern seit langem unterstützt.