Signatur
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
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);
}
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);
});
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);
// Wichtig · Fallstricke
- Live-Sammlung: Wer in einer Schleife über
document.embedsElemente entfernt, überspringt dabei Einträge, weil sich die Indizes verschieben. Deshalb vorher mitArray.from()oder dem Spread-Operator eine statische Kopie anlegen. HTMLCollectionist kein Array.map,filterusw. gibt es nicht.for...ofunditem()bzw. Indexzugriff funktionieren aber. Auf benannte Einträge greift man mitnamedItem()oderembeds["id"]zu.- Nur
<embed>wird erfasst,<object>nicht.document.pluginsist ein identischer Alias und hat nichts mitnavigator.pluginszu 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-Direktiveobject-srceinschränken. Wersrcdynamisch setzt, sollte nur vertrauenswürdige URLs verwenden. - Kompatibilität: Die Eigenschaft wird von allen modernen Browsern seit langem unterstützt.