Start · Sprachen · JavaScript · Referenz · HTMLEmbedElement.src

HTMLEmbedElement.src

Eigenschaft

Liest oder setzt die URL der Ressource, die ein <code>&lt;embed&gt;</code>-Element einbettet. Die Eigenschaft spiegelt das HTML-Attribut <code>src</code> wider.

seit JavaScript Baseline: alle Browser Kategorie: webapi

Signatur

HTMLEmbedElement.src

Beschreibung

Die Eigenschaft src des Interfaces HTMLEmbedElement spiegelt das HTML-Attribut src eines <embed>-Elements wider. Sie enthält die Adresse der eingebetteten Ressource, zum Beispiel eines PDF-Dokuments, einer SVG-Grafik oder eines Mediums, das der Browser mit einem Plugin oder einem eingebauten Betrachter darstellt.

Beim Lesen gibt die Eigenschaft die absolute, aufgelöste URL zurück, selbst wenn im Attribut nur ein relativer Pfad wie docs/handbuch.pdf steht. Den Rohwert des Attributs bekommst du mit getAttribute("src"). Fehlt das Attribut, liefert die Eigenschaft einen leeren String.

Beim Schreiben wird das Attribut aktualisiert, und der Browser lädt die neue Ressource. So kannst du zum Beispiel in einem Dokumentbetrachter zwischen mehreren PDF-Dateien wechseln, ohne das Element neu anzulegen. Häufig verwendet man src zusammen mit type, damit der Browser den passenden Betrachter auswählt.

Parameter

Name Typ Default Beschreibung
$value string Nur beim Setzen: neue URL der Ressource, relativ oder absolut. Relative Angaben werden anhand der Basis-URL des Dokuments aufgelöst.

Rückgabewert

Typ
string
Beschreibung
Die vollständig aufgelöste URL der eingebetteten Ressource oder "", wenn kein src-Attribut gesetzt ist.

Beispiele

URL auslesen: aufgelöst vs. Rohwert

// HTML: <embed id="doc" src="docs/handbuch.pdf" type="application/pdf">
// Seite läuft unter https://example.com/app/
const embed = document.getElementById("doc");

console.log(embed.src);                 // aufgelöste URL
console.log(embed.getAttribute("src")); // Rohwert aus dem HTML
https://example.com/app/docs/handbuch.pdf docs/handbuch.pdf

PDF-Betrachter mit Dateiauswahl

// HTML:
// <select id="auswahl">
//   <option value="pdf/rechnung.pdf">Rechnung</option>
//   <option value="pdf/vertrag.pdf">Vertrag</option>
// </select>
// <embed id="viewer" type="application/pdf" width="800" height="600">
const viewer = document.getElementById("viewer");
const auswahl = document.getElementById("auswahl");

const zeige = (pfad) => {
  viewer.src = pfad; // löst das Laden der neuen Datei aus
};

auswahl.addEventListener("change", (e) => zeige(e.target.value));
zeige(auswahl.value);

embed-Element dynamisch erzeugen

const erstelleEmbed = (url, mimeType) => {
  const embed = document.createElement("embed");
  embed.type = mimeType; // type vor src setzen
  embed.src = url;
  embed.width = "400";
  embed.height = "300";
  return embed;
};

const grafik = erstelleEmbed("/img/diagramm.svg", "image/svg+xml");
document.body.append(grafik);
console.log(grafik.src);
https://example.com/img/diagramm.svg

Prüfen, ob eine Quelle gesetzt ist

const embed = document.createElement("embed");

console.log(embed.src === "");       // noch kein Attribut
console.log(embed.hasAttribute("src"));

embed.src = "video/intro.mp4";
console.log(embed.hasAttribute("src"));
true false true

// Wichtig · Fallstricke

  • Aufgelöste URL: Beim Lesen bekommst du immer eine absolute URL. Wenn du Werte vergleichen willst, nimm getAttribute("src") oder normalisiere beide Seiten mit new URL(...).
  • Neues Laden beim Setzen: Jede Zuweisung kann einen neuen Ladevorgang auslösen. Browser verhalten sich hier unterschiedlich: Manche laden die Ressource erst neu, wenn das Element erneut in das DOM eingefügt wird. Sicherer ist es, das Element zu ersetzen.
  • Keine Ereignisse für Ladefehler: <embed> hat kein zuverlässiges error-Ereignis und keinen Fallback-Inhalt. Wenn du Fehler behandeln musst, ist <object> oder <iframe> oft die bessere Wahl.
  • Sicherheit: Übernimm keine URLs ungeprüft aus Benutzereingaben oder Query-Parametern. javascript:-URLs und fremde Quellen können ein Sicherheitsrisiko sein. Schränke die erlaubten Quellen per CSP ein (object-src, das auch für <embed> gilt) und prüfe Protokoll und Host mit new URL().
  • Plugins: Klassische NPAPI-Plugins wie Flash werden nicht mehr unterstützt. Heute zeigt <embed> praktisch nur noch Inhalte mit eingebauten Betrachtern an (PDF, SVG, Bilder, teilweise Medien). Auf Mobilgeräten werden PDFs oft nicht eingebettet angezeigt.
  • Kompatibilität: Die Eigenschaft wird von allen modernen Browsern unterstützt.