HTML/Tutorials/Aktive Inhalte einbinden
Sie können beliebige aktive Elemente wie AutoCad-Dateien, Excel-Tabellen, Java-Applets, Kaartenausschnitte Midi-Musikdateien, PDFs und vieles andere mehr in Ihre Web-Seite einbinden.
Diese Art der Einbindung ist in den letzten Jahren etwas aus dem Blick geraten:
- HTML5 audio bzw. video sind wesentlich mächtiger als die hier vorgestellten Elemente, da sie keine zusätzlichen Plugins benötigen und eigene Steuerungselemente für das Abspielen mitbringen.
- SVG kann ohne einen früher notwendigen Viewer direkt im HTML, als img oder als background-image eingebunden und sogar animiert werden.
- Flash und im Browser ausgeführte Java-Applets werden aus Sicherheitsbedenken nicht mehr unterstützt.
Inhaltsverzeichnis
iframe
Das iframe-Element (engl. inline frames) wird eher zum Einbinden von Dokumenten und anderen Web-Seiten verwendet. Eingebettete Frames sind (ähnlich wie Grafiken) Bereiche innerhalb einer HTML-Datei, in denen fremde Quellen – vor allem andere HTML-Dateien – angezeigt werden können.
Folgende Attribute sind möglich:
height
: Höhe in CSS-Pixelname
: Name des iframessandbox
: lässt den iframe in einer sandbox mit erhöhten Sicherheitsrestriktionen laufen.seamless
: lässt den iframe als Teil der Seite erscheinensrc
: Quellesrcdoc
: ermöglicht die Angabe von HTML, das dann als Inhalt des iframes dargestellt wirdwidth
: Breite in CSS-PixelBeachten Sie: In HTML5 ist die Angabe von Prozentwerten verpönt; Formatierungen sollten über das CSS erfolgen.
Im Beispiel wurde innerhalb des iframes ein Textabsatz mit einem Alternativtext als Fallback notiert. Dieser wirft im Validator zwar einen Fehler, die auf SO vorgschlagene Alternative, den Fallbacktext in einem Hintergrundbild zu verstecken, wäre ja nicht barrierefrei!
Vorteile einer Sandbox
Wenn Sie das Attribut sandbox
setzen, können Sie bestimmte Aktivitäten der eingebundenen Webseite verhindern. Es handelt sich dabei um eine Mitigation-Technik, die die Auswirkungen einer XSS- oder CSRF-Lücke mindern soll.
Folgende Werte sind möglich:
(kein Wert)
: alle Restriktionen geltenallow-forms
: hebt das Verbot der Formularabsendung wieder aufallow-pointer-lock
: ermöglicht die Verwendung der Pointer-Lock-APIallow-popups
: hebt das Verbot von Popups wieder aufallow-same-origin
: erlaubt dem Dokument des iframes innerhalb seiner same-origin zu laufenallow-scripts
: hebt das Verbot von Scripting wieder aufallow-top-navigation
: ermöglicht den Inhalt des iframes andere Seiten aufrufen zu lassen
Im Beispiel wird Twitter in einem iframe gezeigt. Das Absenden von Formularen, Scripting und Popups ist wieder ermöglicht worden.
allow-same-origin
Das sandbox
-Attribut entfernt die Berechtigung des eingebetteten Dokuments, auf die Daten seiner eigenen Origin zuzugreifen. Bettet eine beliebige Seite ein Dokument von example.com/foo
ein, so darf das eingebettete Dokument nicht auf seine eigenen Daten zugreifen (etwa window.localStorage
oder document.cookie
). Dies kann mit der Angabe von sandbox="allow-same-origin"
wieder zurückgenommen werden: wird dieses Attribut notiert, so darf das eingebettete Dokument wieder auf die eigenen Daten nach der Same-Origin-Policy zugreifen.
srcdoc
Mithilfe des srcdoc
-Attributs lässt sich HTML-Code als Inhalt des iframes angeben, dabei hat das srcdoc
-Attribut Vorrang vor dem src
-Attribut. Bisher ließ sich dies zwar bereits über Data-URLs erreichen, aber hierfür musste das HTML URL-codiert werden, was im srcdoc
-Attribut hingegen nicht der Fall ist. Außerdem lässt sich mithilfe des sandbox
-Attribut der enthaltene Code isolieren, da alle Browser, die srcdoc
unterstützen, sandbox
ebenfalls unterstützen. Browser, die srcdoc
nichts anfangen können, stellen gar nichts dar – der zu isolierende Inhalt sollte keinesfalls als Fallback im src
-Attribut abgelegt werden, da dies die Verwendung des srcdoc
-Attributs ad absurdum führen würde.
<p>Die beiden folgenden iframes zeigen den gleichen Inhalt an:</p>
<iframe src="data:text/html,%3Cb%3EHTML%3C%2Fb%3E"></iframe>
<iframe srcdoc="<b>HTML</b>"></iframe>
<p>Das srcdoc-Attribut hat – sofern der Browser es unterstützt – Vorrang gegenüber src:</p>
<iframe srcdoc="HTML aus srcdoc" src="data:text/html,HTML%20aus%20src"></iframe>
<p>Im folgenden iframe wird kein JavaScript ausgeführt:</p>
<iframe
srcdoc="JavaScript? <script>alert('Hallöle!');</script> <noscript>...kein JavaScript...</noscript>"
sandbox
>
</iframe>
seamless
Mit dem Attribut seamless
sollte erreicht werden, dass der eingebundene iframe nahtlos in die Webseite eingepasst würde, sodass keine Rahmen oder sogar Scrollbars erscheinen. Chrome hatte dies ab Version 22 unterstützt, entzog die Unterstützung aber wieder ab Version 26. Mittlerweile wurde seamless
aus der Spezifikation gestrichen[1].
Wenn Sie keinen Rahmen um das iframe-Element haben wollen und sich nicht darauf verlassen möchten, dass der jeweilige Browser das seamless-Attribut unterstützt, können Sie das auch mit einer passenden CSS-Regel erreichen:
<head>
...
<style>
iframe { border: none; }
</style>
</head>
<body>
...
<iframe ...>
...
</body>
Anwendung
mit Iframes eingebundene Webseiten verkleinern
Sie können eine mit einem iframe eingebundene Webseite verkleinern, wenn Sie den iframe oder ein entsprechendes Container-Element mit der CSS-Eigenschaft transform:scale() skalieren.
iframe.verkleinert{
height: 480px;
width: 640px;
display: block;
overflow: hidden;
position: absolute;
transform: scale(0.5);
transform-origin: left top 0;
}
object
Im Unterschied zu der Einbindung mit embed und iframe können Sie mit object alternative Inhalte als Fallback zur Verfügung stellen.
Folgende Attribute sind möglich:
-
data
: URI, der den Ort der Quelle bestimmt -
form
: ID des form Elements, mit dem es in Verbindung stehen kann -
height
: Höhe -
name
: Name -
type
: MIME-Typ des Plugins -
usemap
: (#)Hash Identifizierungsname des map-Elementes, mit dem es in Verbindung stehen kann. -
width
: Breite
Browser, die keine SVG-Grafiken darstellen können, zeigen stattdessen eine andere Grafik. Falls auch diese Grafik nicht angezeigt werden kann oder soll, steht der Alternativtext zur Verfügung.
param
Parameter werden durch <param name="…" value="…">
angegeben. Beim Attribut name
geben Sie den Namen des Parameters an. Bei value
geben Sie den gewünschten Wert des Parameters an, der dem Plugin übergeben werden soll.
embed
Daneben existiert das embed-Element, das lange nicht zum HTML-Standard gehörte und erst mit HTML5 offiziell akzeptiert wurde.
Folgende Attribute sind möglich:
height
: Höhesrc
: referenziert den Ort der Quelletype
: gibt die Art des zu ladenden Plugins anwidth
: Breite
Referenz
Quellen
- ↑ WHATWG: Remove `<iframe seamless>`; W3C: Remove seamless attribute from iframe