Das object-Element dient ähnlich wie das embed-Element als allgemeiner Behälter für beliebige referenzierte Inhalte. Der Unterschied zum embed-Element besteht darin, dass das object-Element drei verschiedene Content-Modelle für die referenzierten Inhalte kennt:
In der Praxis behandeln allerdings die meisten Browser beide Elemente gleich.
Ein Vorteil des object-Elements besteht zusätzlich darin, dass es im Gegensatz zum embed-Element Fallback-Inhalt erlaubt, also alternativen Inhalt für den Fall, dass das eigentliche Objekt nicht angezeigt oder wiedergegeben werden kann. Es ist auch möglich, als Fallback-Inhalt eines object-Elements ein embed-Element zu notieren. In der Praxis trifft man sogar immer noch sehr häufig auf diese Kombination, vor allem beim Einbinden von Flash.
Verwenden Sie das object-Element, wenn Sie eine komfortablere Parameterschnittstelle als beim embed-Element benötigen, wenn Sie Fallback-Inhalt anbieten möchten, oder wenn Sie object anstelle von img oder iframe verwenden wollen.
<h1>Die Schöpfungsgeschichte als Unix-Shellscript</h1> <object data="schoepfung.txt" type="text/plain" width="500" height="400" ></object> <h1>Eine Uhr</h1> <object data="uhr.svg" type="image/svg+xml" width="300" height="300"></object> <h1>Turm von Hanoi</h1> <object type="application/x-shockwave-flash" width="640" height="320"> <param name="movie" value="turm-von-hanoi.swf"> <param name="quality" value="high"> Sie benötigen einen Flash-Player als Browser-Plugin: <a href="http://get.adobe.com/de/flashplayer/">Download</a> </object> <h1>Labyrinth-Spiel</h1> <object type="application/x-java-applet" width="600" height="400"> <param name="code" value="zmaze3d.class"> </object>
Das Beispiel zeigt insgesamt vier Anwendungsfälle für das object-Element. Im ersten Fall wird eine einfache Textdatei eingebunden, im zweiten Fall eine SVG-Grafik, im dritten ein Flashmovie, und im letzten ein Java-Applet.
Das object-Element wird durch <object>…</object> markiert, besitzt also im Gegensatz zum embed-Element einen Elementinhalt und ein End-Tag. Die Ressource selbst wird üblicherweise mit Hilfe des data-Attributs referenziert. Allerdings ist das beim object-Element nicht immer zwingend so. Im dritten und vierten der obigen Beispiele fehlen die Angaben zu data, weil das Flashmovie und das Java-Applet stattdessen über einen Parameter eingebunden werden. Bei der Zuweisung an das data-Attribut gelten alle Möglichkeiten und Regeln zur Referenzierung.
Um den Browser beim Handling der eingebundenen Ressource zu unterstützen, ist es sinnvoll, zusätzlich ein type-Attribut zu ergänzen. Im type-Attribut geben Sie den gültigen MimeType der Ressource an.
In HTML5 haben Sie die Möglichkeit, mit Hilfe eines zusätzlichen Attributs typemustmatch=“true“ zu erzwingen, dass die Objekt-Ressource nur dann angezeigt wird, wenn der beim type-Attribut angegebene MimeType tatsächlich auf den Inhalt der Ressource passt. Das kann sinnvoll sein, wenn die eingebundene Ressource keine statische Datei ist, sondern z.B. als Stream von einem fremden Server erzeugt wird. In diesem Fall könnten sich die Technik und das Datenformat ändern, ohne dass der Name des Streaming-Scripts sich ändert.
Mit den Attributen width und height bestimmen Sie die Breite und Höhe der eingebetteten Ressource in Pixeln. Gerade bei Objekten wie im ersten Beispiel der eingebundenen Textdatei hat der Browser ohne diese Angaben keinen Anhaltspunkt für die gewünschte Anzeigegröße und greift auf Default-Werte zurück.
Zwischen <object> und </object> können Sie beliebige HTML-Inhalte notieren. Im obigen dritten Beispiel ist ein Text notiert, der dem Anwender einen Link zum Flash-Player anbietet, da dieser zur Anzeige des object-Inhalts erforderlich ist. Es handelt sich beim Elementinhalt also um Fallback-Inhalte, die dann angezeigt werden, wenn der Browser das Objekt nicht anzeigen kann. Sie können an dieser Stelle auch eine alternative Grafik notieren oder einen alternativen Versuch, das Objekt einzubinden, beispielsweise mit embed, video oder audio.
Anders als beim embed-Element werden Parameter, die einem eingebetteten Objekt übergeben werden sollen, nicht in Form von Attributen übergeben, sondern in Form eigener param-Elemente, die im Elementinhalt zwischen <object> und </object> notiert werden. Die param-Elemente werden als Standalone-Tags (<param…>) notiert. Sie erzeugen keinerlei sichtbaren Output im alternativen HTML-Inhalt, der ebenfalls zwischen <object> und </object> notiert ist. Jedes param-Element hat ein name- und ein value-Attribut. Mit dem name-Attribut wird eine Eigenschaft genannt (entspricht dem Attributnamen bei embed), und mit dem value-Attribut der zugehörige Wert (entspricht der Wertzuweisung an das Attribut bei embed).
Wenn Sie XHTML-Standard-konform arbeiten, müssen Sie das Standalone-Tag in der Form <param … /> notieren.
Wenn Sie das object-Element wie ein img-Element verwenden, also Grafiken der Formate JPEG, GIF oder PNG damit referenzieren, können Sie ebenso wie beim img-Element ein Attribut usemap notieren. So können Sie auch mit dem object-Element verweis-sensitive Grafiken (Image-Maps) realisieren. Das usemap-Attribut muss wie beim img-Element auf den Anker eines map-Elements verweisen.
Das object-Element kann ein Attribut name erhalten, z.B. <object name="dynamic_content" data="…" …>. Das Attribut ist für den Fall gedacht, dass ein object-Element so wie ein iframe-Element reagiert und einen sogenannten Browsing-Kontext darstellt, also eine Art Fenster. Über den Namen des Objekts kann sein Inhalt in JavaScript angesprochen werden. Den Namen können Sie auch in Hyperlinks beim target-Attribut verwenden. So können Sie mit <a href="andere.html" target="dynamic_content">Objekt wechsele dich</a> einen Link anbieten, bei dessen Anklicken sich der Inhalt des object-Elements mit name="dynamic_content" ändert.
Das object-Element kann ferner ein Attribut namens form enthalten. Dieses Attribut wurde mit HTML5 neu eingeführt. Der Grund ist, dass das object-Element in Formularen vorkommen darf und dort die Aufgabe eines formular-absendenden Elements übernehmen kann. Das Attribut wird dann benötigt, wenn sich ein Element, das zu einem Formular gehört, außerhalb des Formulars befindet, zu dem es gehört. In diesem Fall kann es mit form="idname" den id-Namen eines form-Elements referenzieren, der dort in der Form <form id="idname"> definiert ist.
Manche Plugins, zum Beispiel Sound-Player, haben eine bestimmte Größe. Wenn Sie die genaue Größe kennen, sollten Sie beim Einbinden von Sound-Dateien, die mit dem betreffenden Plugin wiedergegeben werden sollen, bei den Attribut width und height die genaue Breite und Höhe des Players angeben. Die Größenangaben sind bei solchen Plugins normalerweise bei der Software dokumentiert.
Mit den Angaben width="0" height="0" können Sie die sichtbare Anzeige eines Objekts auch ganz unterdrücken. Das ist beispielsweise für Hintergrundmusik geeignet.
Bei width und height interpretieren die Browser seit jeher auch Prozentangaben. Diese werden durch Angaben wie width="80%" oder height="100%" notiert. Im HTML5-Standard wird diese Möglichkeit jedoch nicht ausdrücklich erwähnt. Stattdessen wird dort ausdrücklich darauf hingewiesen, dass die Angaben bei width und height sogenannte CSS-Pixel bedeuten. Das bedeutet: ein Pixel bei einer für Bildschirme angenommenen Pixel-per-Inch-Dichte von 96ppi. Im Zusammenhang mit eingebetteten Frames kann es in einem Webseiten-Layout durchaus sinnvoll sein, prozentuale Breiten anzugeben. Allerdings ist das auch mit der CSS-Eigenschaft width möglich, und dort sind Prozentangaben explizit erlaubt.
Ein weiteres, in der Praxis immer noch anzutreffendes Attribut ist das classid-Attribut im einleitenden <object>-Tag. Damit können Sie die eindeutige ID einer Implementierung des eingebundenen Objekts angeben. Java-Applets, Python-Applets und ActiveX-Controls bieten solche eindeutigen IDs an und erfordern teilweise zwingend die Angabe des classid-Attributs. Das Attribut gehört in HTML5 wegen der rückläufigen Bedeutung solcher Inhalte nicht mehr zu den offiziellen Attributen des object-Elements, wird aber zumindest noch erwähnt und ist im Rahmen der allgemeinen Attributfreiheit von HTML5 standardkonform. Beispiel:
<object width="267" height="175" classid="CLSID:05589FA1-C356-11CE-BF01-00AA0055595A"> <param name="filename" value="ritmo.mid"> </object>
In diesem Fall wird ein ActiveX-Control eingebunden, um eine MIDI-Datei wiederzugeben. Die ID-Bezeichnung bei classid bezeichnet die Implementierung des Controls und wird von entsprechenden Anbietern, etwa Microsoft, bekannt gegeben.
Im Sprachstandard HTML 4.0 sind weitere Attribute für das object-Element vorgesehen, die in der Praxis jedoch so gut wie nie verwendet wurden. Im HTML5-Standard kommen sie deshalb nicht mehr vor. Das betrifft das standby-Attribut (Meldungstext während des Ladevorgangs) und das Attribut declare (Standalone-Attribut, mit dem der Browser veranlasst werden soll, ein Objekt erst bei Anforderung durch den Anwender zu aktivieren).
Binden Sie Multimedia-Inhalte, die keine weite Verbreitung haben, nicht kommentarlos in Ihre Web-Seiten ein, sondern weisen Sie den Anwender darauf hin, um welche Art von Daten es sich handelt, und unter welchen Voraussetzungen eine korrekte Anzeige möglich ist.
Wenn Sie große Dateien einbetten, ist es gut, den Anwender im umgebenden Text auf die Größe der Datei hinzuweisen.
Korrekturen, Hinweise und Ergänzungen
Bitte scheut euch nicht und meldet, was auf dieser Seite sachlich falsch oder irreführend ist, was ergänzt werden sollte, was fehlt usw. Dazu bitte oben aus dem Menü Seite den Eintrag Diskutieren wählen. Es ist keine Anmeldung erforderlich, um Anmerkungen zu posten. Unpassende Postings, Spam usw. werden allerdings kommentarlos entfernt.