Section 12 : オブジェクト(2)

 Section 11 で紹介した <OBJECT> を使うにあたっては,数多くの属性を指定する必要がある。ところがこれらの属性は貼り込まれるオブジェクトによって指定のしかたが違っている。

画像・動画の挿入

 まずは,画像を挿入する方法を見てみよう。<IMG> でじゅうぶん,と思われるかもしれないが,特殊なフォーマットの画像を扱う場合,代替イメージを用意できる点で <OBJECT> も利用価値があるといえる。

 たとえば,PNG イメージを表示させ,代替措置として GIF イメージを表示させるときは,次のように書く。

<P>
  <OBJECT TYPE="image/png" DATA="picture1.png" WIDTH="160" HEIGHT="120">
    <OBJECT TYPE="image/gif" DATA="picture1.gif" WIDTH="160" HEIGHT="120">
      (代替テキスト)
    </OBJECT>
  </OBJECT>
</P>

 画像で必要なのはその URI で,これは DATA 属性に与える。TYPE 属性でその MIME タイプを指定しておけば,ブラウザはデータを読みに行く前にそのタイプが自分で扱えるかを判断することができるだろう。WIDTH,HEIGHT 属性は前もって画像の大きさを宣言しておくことでブラウザの表示をスムーズに行えるようはかったもので,指定しておくとよい。

 これは画像がブラウザ自身で処理される(つまり,ブラウザがファイルの処理法を“知っている”)場合であるが,プラグインなどを用いる場合には異なることがある。

 お手もとの環境では,上記のような記述は次のように出力される。

 PNG イメージを貼り込みます。それができない場合は GIF イメージで代替します。それも不可能ならばテキストが出力されます。
PNG および GIF イメージの,<OBJECT> による貼り込みはできませんでした。

 動画も基本的に同じように指定するが,動画はデータ量が大きく高速な処理を要求するので,多くの環境を考慮してハイライトを静止画で入れておくのもよいだろう。

文書の挿入

 HTML 文書中に別の HTML 文書を貼り込む場合にも <OBJECT> を用いる。とくに対比などをしたい場合は,リンクを張るよりも便利である。

 基本的には,先ほどの画像の場合と同じである。

<P>......
  <OBJECT TYPE="text/html" DATA="embed.htm">
    ここに表示されない場合は<A HREF="embed.htm">直接参照</A>してください。
  </OBJECT>
......</P>

 このとき注意しなくてはならないのは,貼り込まれた HTML ファイル中における URI が相対指定されたときは,<OBJECT> で呼び出したファイルの URI でなく,貼り込まれたファイルそのものの URI を基準とすることである。

Java アプレット

 オブジェクトとして Java アプレットを貼り込む場合は,クラスファイルを DATA 属性でなく CLASSID 属性に与える。このとき,CLASSID 属性の URI は http: を冠するのではなく,java: を冠する。

<P>
  <OBJECT CODETYPE="application/java" CLASSID="java:javaprog.class" STANDBY="Java applet: Now loading..." WIDTH="320" HEIGHT="240">
    Java 対応では,ここにアプレットが表示されます。
  </OBJECT>
</P>

 Java アプレットの MIME タイプ“application/java”は TYPE 属性でなく CODETYPE 属性に与えることに注意しよう。また,上の例ではブラウザのスムーズな表示を助けるために WIDTH,HEIGHT 属性と,Java アプレットが表示されるまでのメッセージを STANDBY 属性に与えておいた。CLASSID 属性を指定するさいに,クラスファイルが同じディレクトリにないときなどは,CODEBASE 属性で基準 URI を指定しておく。

 そのほかのアプレットも同様の方法で貼り込む。たとえば,Python によるアプレットは,次のように指定される。

<P>
  <OBJECT CLASSID="http://www.netsite.com/prog/pyprog.py" STANDBY="Python applet: Now loading..." WIDTH="160" HEIGHT="120">
    Python 対応では,ここにアプレットが表示されます。
  </OBJECT>
</P>

 この場合も,プログラムファイルは CLASSID 属性に与えられている。

ActiveX コントロール

 ActiveX コントロールを指定するのは CLASSID 属性であるが,ここに与える URI は clsid: を冠することが多い。

<P>
  <OBJECT ID="button1" CLASSID="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11">
  </OBJECT>
</P>

 詳細は,ActiveX コントロールを作成するアプリケーションのマニュアルや,ベンダから提供される使用方法についてのドキュメントを参考にされたい。とくに,ActiveX コントロールはシステムと密接に結びついているので,セキュリティに関してじゅうぶん注意を払う必要がある。

 同様にプラグインも <OBJECT> を用いて貼り込む。これも本稿の範疇外なので,しかるべき文書を参考にされたい。

 以上,<OBJECT> を用いたごく簡単なオブジェクト貼り込みの実例をご覧いただいたが,多種多彩なオブジェクトが存在し,また,これから作られるであろうから,そのすべてを紹介することはできない。したがって,あなたが使おうとするオブジェクトについて,その指定の方法をよく知った上で利用されたい。

 ここには紹介しきれなかったが,CLASSID,DATA 属性を両方指定する場合,DATA-属性にオブジェクトのデータをじかに記述することもあるということにも注意されたい。