HTML
この記事では、画像や動画などの外部データをHTML文書へ埋め込み、利用できない場合には別の内容を表示できるobject要素の役割と基本を説明します。
この記事でわかること
objectで外部データを埋め込む方法- 子要素をフォールバックとして用意する仕組み
embed・iframe・専用要素との使い分け
HyperText Markup Language object element.
object 要素
object要素とは画像や動画、音声、プラグインデータ、HTML文書などのさまざまな形式を持つデータを文書に埋め込むための汎用的なタグです。applet要素、embed要素、bgsound要素、img要素などの替わりに使用されます。指定したデータにブラウザが対応していないなどの理由で利用できない場合には、object要素の内容が代替として使用されます。
ただし、object要素の動作はブラウザやバージョン、プラグインの種類などによって動作が異なり、対応も完全ではありません。そのため、限られた状況でしか使用できず object要素や applet要素や embed要素などが混在した状況になっています。
開始タグと終了タグの中に入れたコンテンツは、フォールバック・コンテンツとして機能します。もし object要素で組み込んだコンテンツがブラウザで表示できなかった場合に、フォールバック・コンテンツが代わりに表示されることになります。
このフォールバックは、iframe要素とは異なり、object要素をサポートしていないブラウザに対するフォールバックだけを対象にしたものではありません。object要素の data属性に指定した URLからデータを取得できなかった場合でも、フォールバックが機能します。
object 要素の概要
- Category 「カテゴリー」
- Flow content 「フロー・コンテンツ」
- Phrasing content 「フレージング・コンテンツ:記述コンテンツ」
- Embedded content 「エンベッディッド・コンテンツ:埋め込みコンテンツ」
- usemap属性が存在する場合:Interactive content 「インタラクティブ・コンテンツ」
- フォーム関連要素
- コンテンツ・モデル
- 0個以上の param要素に続き、トランスペアレント
- 利用可能な場所
- エンベディッド・コンテンツが期待される場所
- タグの省略
- 不可。開始と終了タグの両方が必要。
- 要素固有のコンテンツ属性
-
- data
- 組み込むコンテンツのアドレスを指定します。
- type
- 組み込むコンテンツの MIMEタイプを指定します。
- classid
- 実行ファイルの URLを指定します。データ形式に応じて data属性と併用(または代用)します。
- codetype
- classidで指定したプログラムの MIMEタイプをしてします。
- archive
- 関連するリソースがアーカイブされている場合、そのアーカイブファイルの URLリストを指定します。
- width
- 組み込むコンテンツの横幅をピクセル、またはパーセンテージで指定します。
- height
- 組み込むコンテンツの縦幅をピクセル、またはパーセンテージで指定します。
- usemap
- map要素を使用し、イメージマップの関連付けを行います。
- name
- オブジェクトの名前を指定します。
- standby
- ダウンロード中のメッセージを指定します。
- declare
- 実行せずに待機状態にします。
- align
- 表示位置を指定します。
- border
- 画像の周りにおけるボーダーラインの太さを指定します。
- hspace
- 画像の左右の余白をピクセルで指定します。
- vspace
- 画像の上下の余白をピクセルで指定します。
- typemustmatch
- 指定された場合、dataで指定されたリソースは typeの MIMEと一致した場合のみ使われます。
- form
- 関連付けたい form要素の id属性値を指定します。
- 標準的なスタイル
- -
data属性と type属性
data属性にコンテンツの URLを、type属性に、そのコンテンツの MIMEタイプを指定すれば、ブラウザが対応していれば、それを表示することが可能です。
SVG を組み込んだマークアップ例
<object data="logo.svg" type="image/svg+xml">
<img src="logo.png" alt="株式会社○○○○" />
</object>
この例は、object要素を使って SVGで作られたイメージを表示します。しかし、ブラウザが SVGをサポートしていない場合は、object要素の開始タグと終了タグの中にあるコンテンツが表示されることになります。
name属性
object要素には、iframe要素のように HTMLを組み込むことも可能です。この場合、object要素には、新たにブラウジング・コンテキストが生成されます。object要素に name属性を指定することで、そのブラウジング・コンテキスト名を与えることができます。
HTML ファイルを組み込んだマークアップ例
<object data="child.html" type="text/html" name="figure"></object>
<p><a href="child2.html" target="figure">新着情報</a></p>
この例では、object要素に name属性をセットして、ブラウジング・コンテキスト名を指定しています。a要素の target属性に、そのブラウジング・コンテキスト名を指定することで、その a要素のハイパーリンクをたどると、object要素のコンテンツとして表示されることになります。Internet Explorerは、これに対応していませんが、それ以外のブラウザは対応しています。
usemap属性
usemap属性を指定すると、該当の object要素がイメージマップに関連付けられることを表すことができます。もし object要素のコンテンツがイメージでない場合は、この属性が指定されていたとしても、無視されます。
この属性には、map要素の name属性値の前に # を加えた値をセットします。
form属性
object要素は、フォーム関連要素にもなることができます。
通常、フォームを構成するコントロールは、form要素の中にマークアップする必要があります。しかし、form属性に form要素の id属性の値を指定することで、form要素の中になくても、その form要素が構成するフォームのコントロールとして機能します。
form コンテンツ属性のマークアップ例
<form id="frm" action="post.cgi" method="post">
<p><input type="submit" value="送信" /></p>
</form>
<p>
<object form="frm" data="calendar.swf" type="application/x-shockwave-flash" width="200" height="200" id="calendar">
<param name="movie" value="calendar.swf" />
<label>生年月日:<input type="date" name="birth" /></label>
</object>
</p>
この例は、プラグインを使って、独特のカレンダーのユーザー・インターフェースを用意したものを想定しています。フォールバック・コンテンツには、input要素でテキスト入力フィールドを用意しています。この object要素は form要素の中にマークアップされていませんが、form属性によって、手前にある form要素と関連付けられることになります。
width属性と height属性
width属性と height属性には、それぞれ、object要素によってレンダリングされる領域の横幅を指定することができます。
サイズを指定した object 要素のマークアップ例
<object data="logo.svg" type="image/svg+xml" width="150" height="150">
<img src="logo.png" alt="株式会社○○○○" width="150" height="150" />
</object>