object要素(generic embedded object)は Javaアプレット、画像(イメージ)、音声(サウンド)、動画(ムービー)などのオブジェクト(外部アプリケーション)全般をウェブページ中に埋め込んで UA で操作できるようにします。アプリケーションの実行時に必要なパラメータ値は param要素で設定します。開始タグの "<object>" と終了タグの "</object>" の間には何らかのトラブルでオブジェクトが表示できない場合や音声出力・点字出力などの非視覚環境、UA がそのオブジェクトの再生に対応していない、あるいは表示しない設定にしている環境において、そのオブジェクトの表現する情報の代替となる内容を指定します。
ただし現状では object要素に対する UA のサポートが不完全なため、画像には img要素が使われており、Javaアプレットには applet要素, 音声・動画データ等には embed要素と組み合わせた状態で使われています。しかし、これから登場するかもしれない未来の環境でも利用できるウェブページ作りを目的とするのであれば、今後の対応がどのようになるかわからない非推奨要素や属性、独自機能を使うのではなく、それらに代わって仕様が情報的価値を高められるとして推奨するように、前方互換を見通して object要素を使用すると良いでしょう。
object要素はインライン要素だけでなくブロック要素も内包することができるので、ブロックレベル・インラインレベルの両方を取ることができる要素型に分類されます。ただし、両方同時は不可能なためブロック要素の中で使われた場合は、インライン要素として扱われます。
表示域内のどこにオブジェクトを揃えるか、その後に続くテキストの揃え方を指定します。値には次の5つのキーワードがあります。キーワードは半角アルファベットの大文字・小文字が区別されません(case-insensitive)。
align属性は非推奨属性のため、CSS の floatプロパティで左右の配置とその後に続くテキスト(複数行)の揃え方を、vertical-alignプロパティでテキスト(1行)との垂直方向の並びをそれぞれ代替することが推奨されています。また、回り込んだテキストを途中で解除したい場合は br要素に clear属性を指定すれば良いのですが、clear属性も非推奨属性のため、オブジェクトの後に続くブロック要素に clearプロパティを指定すると良いでしょう。
オブジェクトに関連づけられているアーカイブの URI を示します。アーカイブとは、複数のオブジェクトのファイルを1つにまとめた圧縮ファイル(書庫ファイル)のことです。このアーカイブを事前に読み込んでおくことで、プログラムの起動時間を短縮させ、オブジェクトの動作効率の向上につながります。複数指定する場合は、半角スペースで区切って指定します。たとえば、Javaアプレットのアーカイブ(.jar)の場合は archive="xxx.jar" "xxx.jar" のように指定します。また、codebase属性を指定した場合は、その値を基準とした相対URI で指定します(Windows版Internet Explorer のみ相対URI で参照できる機能ではなく独自の機能をもちます)。archive属性に Windows版Internet Explorer と Safari は対応していません。
オブジェクトの周りに境界線を表示させます。border属性は非推奨とされています。また、Macintosh版Internet Explorer 5 では border属性の指定は無効です。枠の表示指定は、CSS の borderプロパティで代替することが推奨されています。
Javaアプレットの classファイル(.class)を classid="java:xxx.class" の形式で指定したり、ActiveX コントロールのクラスID(識別番号)を classid="clsid:クラスID" の形式で指定します。data属性 と併用・代用が可能なので、Javaアプレット以外は data属性で指定すると良いでしょう。なお、codebase属性を指定した場合は、その値を基準とした相対URI で指定します(Windows版Internet Explorer のみ相対URI で参照できる機能ではなく独自の機能をもちます)。
classid属性に ActiveX コントロールを埋め込むための識別番号を指定した場合に機能するのは、現状では Windows版Internet Explorer のみです。ゆえに ActiveX コントロールは、ほぼ Windows版Internet Explorer 専用のプラグインという位置づけになっています。代表的な ActiveX コントロールのクラスID(識別番号)には次のようなものがあります。
classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"classid="clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6"classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B"classid="clsid:CFCDAA03-8BE4-11CF-B84B-0020AFBBCCFA"classid="clsid:166B1BCA-3F9C-11CF-8075-444553540000"たとえば、Flashファイルを再生できる ActiveX コントロールには Macromeida の Flash Player と Apple の QuickTime がありますが、その Flashファイルが QuickTime では再現できない機能があるために Flash Player の方だけで再生させたいという場合などに指定することで、再生を Flash Player にだけに制御するように UA に働きかけることが期待されます。なお、Windows版Internet Explorer の独自機能に codebase属性でオブジェクトを再生するのに必要な ActiveX コントロールのダウンロード先の URI を指定する使い方があります(注意)。
classid属性, data属性, archive属性で指定された相対URI の基準となる URI を指定します。codebase属性の指定がない場合は、object要素が含まれるウェブページの URI が基準URI となります。
また、Windows版Internet Explorer の独自機能で、ActiveX コントロールのダウンロード先の URI を指定する使い方があります。しかし、Windows版Internet Explorer における codebase属性には仕様で定義されている classid属性, data属性, archive属性に指定された相対URI の基準URI となる機能の働きはありません。たとえば、Flashファイルの埋め込みに Flash Player の識別番号(classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000")にあわせて、Flash Player のダウンロード先(codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0")を指定した場合、仕様どおりの機能をもつ Netscpae, Firefox では一切オブジェクトを再生できなくなります。これは codebase属性の値になっている ActiveX コントロールのダウンロード先の URI を classid属性, data属性, archive属性に指定された相対URI の基準URI として認識してしまうためです。このため Windows版Internet Explorer の独自機能である ActiveX コントロールのダウンロード先を指定する使い方は避けましょう。
classid属性で指定されたオブジェクトの MIMEタイプを指定します。指定されたオブジェクトを実行する前に事前にその UA の環境下で実行可能かどうかを判断をつけるように UA に働きかけます。このため classid属性を指定した場合は、codetype属性を指定することが推奨されています。よく利用する MIMEタイプには次のようなものがあります。
オブジェクトの所在を URI で指定します。classid属性と併用・代用が可能で、Javaアプレットについては classid属性で指定し、それ以外のオブジェクトについていは data属性で指定すると良いでしょう。なお、codebase属性を指定した場合は、その値を基準とした相対URI で指定します(Windows版Internet Explorer のみ相対URI で参照できる機能ではなく独自の機能をもちます)。
オブジェクトを宣言するだけで、プログラムは実行前の待機状態になります。つまり、ページを読み込んだときに自動的にオブジェクトを実行しなくなります。そして、declare属性を指定した object要素に id属性を組み合わせれば、スクリプトを使ってユーザーの操作でオブジェクトを実行する仕組みを作ることもできます。ただし現状では declare属性に対応している UA はありません。HTML4.01 では declare、XHTML では属性値を省略できないため declare="declare" と記述します。
オブジェクトの高さを指定します。実際のサイズよりも、サイズ指定を大きくして表示することも可能ですが、画像ファイルの場合はその画像ファイルがもつ画像解像度は変わらないため、値を大きく指定した分、画像は荒く表示されます。また、オブジェクトのサイズをあらかじめ指定しておくとことで、UA はオブジェクトの読み込みを待たずに、指定されたオブジェクトのサイズ分の領域をあけておいて、先に他の要素を表示して、ページの全体像を早く表示することができます。レンダリングがスムーズに行えるようにするためにも必須属性ではありませんが、height属性と対のオブジェクトの横幅を設定する width属性を指定しておくことが望まれます。
オブジェクトと周りの内容との間に水平(左右)方向の余白を設けます。余白の指定は CSS の marginプロパティで代替することが推奨されています。
object要素がフォームのコントロール部品である場合に、連携させるために名前を指定します。コントロール名は半角アルファベットの大文字・小文字が区別されません(case-insensitive)。現状では name属性を指定することでフォームのコントロールとして連携する UA はありません。
オブジェクトのプログラムをダウンロードしている待ち時間に表示するメッセージを指定します。現状では standby属性に対応している UA はありません。
data属性で指定されたオブジェクトの MIMEタイプを指定します。事前にその UA の環境下でオブジェクトの実行可能かどうかの判断をつけて、サポートしていないオブジェクトであれば、そのオブジェクトを実行する前にデータをロードすることのないように働きかけます。よく利用する MIMEタイプには次のようなものがあります。
これらの MIMEタイプに対する拡張子は、ウェブサーバーの管理者が編集した httpd.conf というファイルによって既定されています。ただし、サーバソフトウェアに Apache を利用しているウェブサーバーでは、.htaccess(ドットエイチティーアクセス)を使うことで、レンタルサーバーからスペースを借りている各ウェブサイトの管理者の方でも、どの拡張子をどの MIMEタイプで提供するかといった動作をディレクトリ単位で設定することができます。詳しい設定方法は、MIMEタイプ・文字コードの設定を参照してください。
map要素で作成するクライアントサイド・イメージマップ(クリッカブルマップ)との関連づけをおこなう際に指定します。Windows版Internet Explorer と Safari は object要素で連携するイメージマップには対応していません。ハッシュ(#)を前置し、usemap="#名前" という形で、map要素の name属性、または id属性の値を指定します。たとえば、map要素の name属性の値が name="map" であれば、object要素の usmap属性の値は usemap="#map" と指定します。
ただし、XHTML1.1 ではハッシュ(#)を前置する必要はありません。そのため、map要素の id属性の値が id="map" であれば、XHTML1.1 における object要素の usmap属性の値は usemap="map" と ID名だけを指定します。
オブジェクトと周りの内容との間に垂直(上下)方向の余白を設けます。余白の指定は CSS の marginプロパティで代替することが推奨されています。
オブジェクトの横幅を指定します。実際のサイズよりも、サイズ指定を大きくして表示することも可能ですが、画像ファイルの場合はその画像ファイルがもつ画像解像度は変わらないため、値を大きく指定した分、画像は荒く表示されます。また、オブジェクトのサイズをあらかじめ指定しておくとことで、UA はオブジェクトの読み込みを待たずに、指定されたオブジェクトのサイズ分の領域をあけておいて、先に他の要素を表示して、ページの全体像を早く表示することができます。レンダリングがスムーズに行えるようにするためにも必須属性ではありませんが、width属性と対のオブジェクトの高さを設定する height属性を指定しておくことが望まれます。