<iframe>
Das iframe-Element repräsentiert einen verschachtelten Browserkontext. HTML 5 Standard - "Das <iframe>
Element"
Wird hauptsächlich verwendet, um Ressourcen aus anderen Domänen oder Subdomänen einzuschließen, kann jedoch auch verwendet werden, um Inhalte aus derselben Domäne einzuschließen. Die <iframe>
Stärke von ist, dass der eingebettete Code "live" ist und mit dem übergeordneten Dokument kommunizieren kann.
<embed>
In HTML 5 standardisiert, war es zuvor ein nicht standardmäßiges Tag, das zugegebenermaßen von allen gängigen Browsern implementiert wurde. Verhalten vor HTML 5 kann variieren ...
Das Einbettungselement bietet einen Integrationspunkt für eine externe (normalerweise nicht HTML) Anwendung oder interaktiven Inhalte. ( HTML 5 Standard - "Das <embed>
Element" )
Wird zum Einbetten von Inhalten für Browser-Plugins verwendet. Ausnahmen bilden SVG und HTML, die je nach Standard unterschiedlich behandelt werden.
Die Details darüber, was mit dem eingebetteten Inhalt gemacht werden kann und was nicht, hängt vom jeweiligen Browser-Plugin ab. Für SVG können Sie jedoch vom übergeordneten Dokument aus auf das eingebettete SVG-Dokument zugreifen.
svg = document.getElementById("parent_id").getSVGDocument();
Innerhalb eines eingebetteten SVG- oder HTML-Dokuments können Sie das übergeordnete Dokument erreichen mit:
parent = window.parent.document;
Für eingebettetes HTML gibt es keine Möglichkeit, vom eingebetteten Dokument (das ich gefunden habe) auf das eingebettete Dokument zuzugreifen.
<object>
Das <object>
Element kann eine externe Ressource darstellen, die je nach Ressourcentyp entweder als Bild, als verschachtelter Browserkontext oder als externe Ressource behandelt wird, die von einem Plugin verarbeitet wird. ( HTML 5 Standard - "Die<object>
Element" )
Fazit
Wenn Sie SVG oder etwas Statisches nicht einbetten, verwenden Sie es wahrscheinlich am besten <iframe>
. Um SVG einzuschließen, verwenden Sie <embed>
(wenn ich mich richtig erinnere<object>
lassen Sie kein Skript †). Ehrlich gesagt weiß ich nicht, warum Sie es verwenden würden, es <object>
sei denn für ältere Browser oder Flash (mit denen ich nicht arbeite).
† Wie in den Kommentaren unten ausgeführt; Skripte in <object>
werden ausgeführt, aber die übergeordneten und untergeordneten Kontexte können nicht direkt kommunizieren. Mit <embed>
können Sie den Kontext des Kindes vom Elternteil abrufen und umgekehrt. Dies bedeutet, dass Sie Skripte im übergeordneten Element verwenden können, um das untergeordnete Element usw. zu bearbeiten. Dieser Teil ist nicht möglich <object>
oder <iframe>
Sie müssten stattdessen einen anderen Mechanismus einrichten, z. B. die JavaScript-API postMessage .