mozilla

Plug-in Basics

このページは翻訳中です。
翻訳作業に参加する場合は、履歴にある翻訳者と連絡·調整してください。

プラグインの使われ方

プラグインは Gecko ベースのブラウザの柔軟性を増す豊富な多種の機能を提供します。以下のようなプラグインが現在利用できます:

  • Adobe Flash や Adobe Acrobat のようなマルチメディアのビュアー
  • オブジェクトの組み込みや圧縮/解凍サービスを提供するユーティリティ
  • 個人情報からゲームまで及ぶアプリケーション

新しく革新的なプラグインを作成する増え続ける独立したソフトウェアのベンダーによって見せられたとき、プラグイン技術に対する可能性の範囲は無限のようにみえます。

プラグイン API で、以下のことができる動的に読み込まれるプラグインを作成できます:

  • 一つ以上の MIME タイプを登録する
  • ブラウザウィンドウの一部へ描画する
  • キーボードとマウスのイベントを受け取る
  • URL を使ってネットワークからデータを得る
  • URL へデータを送信する
  • 新しい URL へリンクするハイパーリンクやホットスポットを追加する
  • HTML ページ上の一部に描画する
  • ネイティブコードから JavaScript/DOM と通信する

「インストールされているプラグイン」ページを見ることでどのプラグインがシステムにインストールされていてブラウザに適切に結びつけられているのかが分かります。ヘルプメニューに行き、ヘルプをクリックしその後「プラグインについて」。 ロケーションバー内で "about:plugins" と入力してください。「インストールされたプラグイン」ページでは MIME タイプやそれに割り当てられた個々の MIME タイプに対するタイプ、説明、ファイルの拡張子やプラグインの現在の状態(有効か無効)と一緒に個々のインストールされたプラグインを列挙されています。view-source 内でこの情報は単に JavaScript から集められたことに注意してください。

プラグインはプラットフォーム固有のものなので、プラグインを展開したいすべてのオペレーティングシステムやプロセッサのプラットフォームへそれらを移植しなければなりません。

プラグインとヘルパーアプリケーション

プラグインの前に、ヘルパーアプリケーションがあります。ヘルパーアプリケーションはブラウザから起動できる分けられた、独立したアプリケーションです。プラグインのように、ブラウザはヘルパーアプリケーションにマップされた MIME タイプに出くわすと、ブラウザはそれを起動します。プラグインとは異なり、ヘルパーアプリケーションは独自のアプリケーション空間内でブラウザとは分かれて実行されてブラウザやウェブとは相互作用しません。

ブラウザが MIME タイプに出くわすと、常に最初に登録されているプラグインを最初に検索します。MIME タイプに一致するものがなければ、ヘルパーアプリケーションを探します。

プラグインとヘルパーアプリケーションは異なるアプリケーションの必要なものを満たします。ヘルパーアプリケーションについての更なる情報に関しては、Netscape オンラインヘルプを参照してください。

プラグインの動作の仕方

アプリケーションとは異なり、プラグインのライフサイクルはそれを呼ぶウェブページによって完全に制御されています。このセクションではブラウザ内でのプラグインの動作の仕方の概観を与えます。

Gecko が起動したとき、システム上の特定の場所内のプラグインモジュールを探します。Gecko が異なるシステム上のプラグインモジュールをどこから探すのかについての更なる情報に関しては、Gecko のプラグインの見つけ方を参照してください。

プラグインを起動するメディアタイプの組み込まれたデータを含むページをユーザが開いたとき、ブラウザは以下の一連の動作で反応します:

  • 一致する MIME タイプを持つプラグインを調べる
  • プラグインのコードをメモリに読み込む
  • プラグインを初期化する
  • プラグインの新しいインスタンスを作成する

Gecko は同時に単一のページ上やいくつかの開いたウィンドウ内に同じプラグインの複数のインスタンスを読み込んだりできます。例えば、(もちろんいくつかの RealAudio ファイルを同時に演奏するのはほとんどよい考えではないけれども)いくつかの組み込みの RealAudio クリップがあるページを見れば、ブラウザは必要なだけの数の RealPlayer プラグインのインスタンスを作成します。 ユーザがページを離れたり閉じたりしたとき、プラグインのインスタンスは削除されます。プラグインの最後のインスタンスが削除されたとき、プラグインのコードはメモリから開放されます。読み込まれていないときプラグインはディスク空間以外はリソースを消費しません。次のセクション ランタイムモデルの理解 ではより詳細にこれらの段階を説明します。

ランタイムモデルの理解

プラグインは一つ以上の MIME タイプに結びつけられた動的なコードモジュールです。ブラウザが起動したとき、利用可能なプラグインを列挙し(この段階はプラットフォームによって変わります)、プラグインに対する MIME タイプを決めるために個々のプラグインからリソースを読み込んで、MIME タイプに対する個々のプラグインライブラリを登録します。

以下の段階では読み込みから削除までのプラグインの一生の概要を説明しています:

  • (HTML ページや個別のファイル内で)プラグインに対して登録された MIME タイプのデータに出くわすと、まだ読み込まれていなければ、メモリにプラグインのコードを動的に読み込んで、プラグインの新しいインスタンスを作成します。

プラグインのコードが最初に読み込まれたとき Gecko はプラグイン API 関数 NP_Initialize を呼びます。慣例により、すべてのプラグイン固有の関数には接頭辞 "NPP" が付き、すべてのブラウザ固有の関数には接頭辞 "NPN" がついています。

: NP_InitializeNP_Shutdown は技術的にはプラグインがブラウザに渡す関数表の一部ではありません。ブラウザはプラグインソフトウェアが読み込まれたときと開放されたときにそれらを呼びます。これらの関数はプラグイン DLL からエクスポートされシステムテーブルの検索でアクセスされ、これはいかなる特定のプラグインのインスタンスとも関連していないという意味です。再び、初期化と破棄についての更なる情報に関しては Initialization and Destruction を参照してください。

  • インスタンスが作成されたときにブラウザはプラグイン API 関数 NPP_New を呼びます。(a) 単一のページ上に複数の組み込みのオブジェクトがあるか、(b) いくつかのブラウザウィンドウが開いておりそれぞれが同じデータ型を表示しているならば、同じプラグインの複数のインスタンスが存在し得ます。
  • プラグインのインスタンスはユーザがインスタンスのページを離れるかウィンドウを閉じるかすると削除されます。Gecko はインスタンスが削除されていることをプラグインに通知するために関数 NPP_Destroy を呼びます。
  • 最後のプラグインのインスタンスが削除されるとき、プラグインのコードはメモリから解放されます。Gecko は関数 NP_Shutdown を呼びます。プラグインは読み込まれていないとき(ディスク空間以外は)リソースを消費しません。

: プラグイン API の呼び出しやコールバックではメインの Navigator スレッドを使っています。一般的に、プラグインの一生の任意の段階で処理を扱うために追加のスレッドをプラグインに生成させたいならば、プラグイン API の呼び出しからそれらを分離するように注意すべきです。

これらのメソッドの使用についての更なる情報については Initialization and Destruction を参照してください。

プラグインの検出

Gecko はさまざまな場所から特定の順序でプラグインを探します。次のセクションGecko のプラグインの見つけ方ではこの規則を記述しており、以下のセクションMIME タイプによるプラグインの確認では自分でプラグインを探してどのプラグインがどの MIME タイプに対して登録されているかをはっきりさせるための JavaScript の使い方を説明しています。

Gecko のプラグインの見つけ方

Gecko ベースのブラウザが Windows や Unix システム上で起動したとき、MOZ_PLUGIN_PATH によって向けられたパス内のプラグインモジュールを調べます。その後で、そのプラットフォームに対するプラグインディレクトリ内を調べます:

  • MS Windows: ブラウザアプリケーションと同じディレクトリ内の plugins サブディレクトリ。
  • Mac OS: Plug-ins フォルダ。Plug-ins フォルダ内のプラグインへリンクする Macintosh エイリアスをインストールしていれば Mac OS プラグインは異なるディレクトリ内にあってもいいです。
  • Unix: usr/local/lib/netscape/plugins または $HOME/.mozilla/plugins。 異なるディレクトリを使いたければ、MOZ_PLUGIN_PATH 環境変数にそのファイルパスを設定して、例えば、$HOME/yourplugins:/usr/local/lib/netscape/plugins のようにしてください。Gecko はこの変数が指定するすべてのディレクトリを探します。ローカルユーザの位置は、もしあれば、ネットワークの位置に優先します。
  • Mac OS X: プラグインは以下の場所内のアプリケーションバンドルとともに読み込まれます: BUNDLE/Contents/Plug-InsBUNDLE/Contents/MacOS/plugins。また、ブラウザは ~/Library/Internet Plugins それから /Library/Internet Plugins を読み取ります。これらのディレクトリ内で、プラグインは日付で順序づけられます。

すべてのプラットフォーム上で、plug-ins サブディレクトリやフォルダはブラウザアプリケーションと同じディレクトリでなければなりません。手動によってか、バイナリのインストーラープログラムを使うことによってか、ブラウザがインストールを行うために使う、インストールスクリプトを書くために XPInstall API を使うことによって、ユーザはプラグインをこのディレクトリ内にインストールできます。これらの選択肢についての更なる情報に関しては、プラグインのインストールを参照してください。

どのプラグインが現在インストールされているのかを調べるには、ヘルプメニュー (MS Windows や Unix) や "?"(ヘルプ)メニュー (Mac OS) から「プラグインについて」を選択してください。Gecko はすべてのインストールされたプラグインやそれらの扱う MIME タイプ、及びプラグインによって提供される任意の説明情報を列挙するページを表示します。

Windows 上では、インストールされたプラグインはそれらのサポートする MIME タイプを扱えるように自動的に設定されます。複数のプラグインが同じ MIME タイプを扱うならば、最初に登録されたプラグインがその MIME タイプを扱います。MIME タイプが割り当てられる方法についての情報に関しては、プラグインの登録を参照してください。

MIME タイプによるプラグインの確認

JavaScript 内の enabledPlugin プロパティは特定の MIME タイプに対してどのプラグインが設定されているのかを決めるのに使えます。プラグインは複数の MIME タイプをサポートすることができ個々の MIME タイプは複数のプラグインによってサポートされるかもしれないけれども、一つのプラグインだけが一つの MIME タイプに対して設定できます。enabledPlugin プロパティは特定の MIME タイプに対して設定されたプラグインを表す Plugin オブジェクトへの参照です。

例えば、ユーザに MIME タイプに対して設定されたプラグインがあればページ上の object 要素を動的に作成するために、どのプラグインがある MIME タイプに対して設定されているのかを知る必要があるかもしれません。

以下の例では Adobe Flash プラグインがインストールされているのかを調べるために JavaScript を使っています。インストールされていれば、ムービーが表示されます。

// Adobe Flash ムービーを表示できますか
var mimetype = navigator.mimeTypes["application/x-shockwave-flash"];

if (mimetype) {
   // はい、ではプラグインで表示できますか
   var plugin = mimetype.enabledPlugin;
   if (plugin) {
      // はい、だからインラインでデータを表示します
      document.writeln("ここにムービーがあります: <object data='mymovie.swf' height='100' width='100'></object>");
   } else {
      // いいえ、だからデータへのリンクを提供します
      document.writeln("ムービーを見るために<a href='mymovie.swf'>ここをクリックしてください</a>。");
   }
} else {
   // いいえ、だからそのように伝えます
   document.writeln("すいません、このムービーを表示できません。");
}

プラグイン構造の概観

このセクションはプラグインを開発するときに必要となる基本的な情報の概観です。

プラグイン API の理解

プラグインはソースが標準 C の文法に従うネイティブコードライブラリです。プラグイン・アプリケーション・プログラミング・インターフェース (API) は二つのグループの関数や一連の共有データ構造で構成されています。

  • プラグインメソッドはプラグイン内で実装する関数です。Gecko はこれらの関数を呼びます。API 内のすべてのプラグイン関数の名前は NPP_ で始まり、例えば、NPP_New です。直接のライブラリのエントリポイントでどの特定のプラグインのインスタンスとも関連づけられていないいくつかの関数(例えば、NP_InitializeNP_Shutdown)があります。
  • ブラウザメソッドは Gecko によって実装される関数です。プラグインがこれらの関数を呼びます。API 内のすべてのブラウザ関数の名前は NPN_ で始まり、例えば、NPN_Write です。
  • データ構造体はプラグイン API 内で使うために定義されたプラグイン固有の型です。構造体の名前は NP で始まり、例えば、 NPWindow です。

API 内のすべてのプラグイン名は NP で始まります。一般的に、すべての API 関数の操作はすべてのプラットフォーム上で同じです。これが変わる場合には、リファレンスセクション内の関数に対するリファレンス項目で違いを説明しています。

プラグインとプラットフォーム非依存

プラグインはブラウザを実行している特定のプラットフォームでネイティブな動的なコードモジュールです。それはアプリケーションやアプレットというよりも、コードライブラリで、ブラウザからのみ動作します。プラグインはプラットフォーム固有ではあるけれども、プラグイン API は最大限の柔軟性を提供しすべてのプラットフォーム越しに機能的に一致するように設計されています。このガイドでは MS Windows、Mac OS X、や Unix プラットフォームに対してコードを書く上でのプラットフォーム固有の違いについて言及しています。

ネイティブコードを利用することでメディアタイプ駆動で高いパフォーマンスを提供するプラグインを書くためにプラグイン API を使えます。プラグインはシームレスにプラットフォーム非依存のコードを統合し、新しいデータ型に対するサポートを提供することで Gecko の中核機能を強化する機会を提供します。

プラグインのファイル形式はプラットフォームに依存します:

  • MS Windows: .DLL (Dynamic Link Library) ファイル
  • Unix: .SO or .DSO (Shared Objects) ファイル
  • Mac OS: PowerPC 共有ライブラリファイル。
  • Mac OS X: PPC/x86/ユニバーサル 読み込み可能 Mach-O バンドル

ウィンドウを持つプラグインと持たないプラグイン

独自のネイティブなウィンドウやウェブページ上のフレームに描画するプラグインを書けます。代わりに、描画するウィンドウを必要としないプラグインを書けます。ウィンドウを持たないプラグインを使うことでウェブページのデザインや機能の可能性を広げます。しかし、ウィンドウを持つプラグインは一般的により開発しやすく使う上でより安定しているので、プラグインはデフォルトでウィンドウを持つことに注意してください。

  • ウィンドウを持つプラグインはウェブページ上の独自のネイティブなウィンドウに描画されます。ウィンドウを持つプラグインは不透明で常にウェブページの HTML 部分のトップに来ます。
  • ウィンドウを持たないプラグインはネイティブウィンドウ内に描画される必要はありません。それは独自の描画ターゲットに描画されます。ウィンドウを持たないプラグインは不透明や透明になることができ、HTML 部分で呼び出すことができます。

プラグインがウィンドウを持つかどうかはそれをどのように定義したかに依存します。

ウェブページ上でプラグインが表示される方法はそれらを呼び出す HTML 要素に依って決まります。これはコンテンツの開発者やウェブページの製作者次第です。要素やその属性に依存して、プラグインは表示や非表示にすることができ、ウェブページの一部としてや独自のウィンドウ内のフルページとして表示できます。 どの HTML 表示モードでもウェブページはウィンドウを持つプラグインや持たないプラグインを表示できます。しかし、プラグインはウィンドウタイプが意味を持つように表示されていなければなりません。HTML がプラグインの表示モードを決める方法についての情報に関しては、「プラグイン表示のための HTML の使用」を参照してください。

デフォルトのプラグイン

特定のプラグインが HTML 内で参照されたメディアを扱うように登録されていなかったとき、Gecko はデフォルトのプラグインを呼び出し、ユーザがその MIME タイプに対する正しいプラグインを見つけてインストールするのを助けます。

デフォルトのプラグインが読み込まれたときに HTML ページのプラグインウィンドウ内に現れる青いパズルピースはブラウザが要求されたメディアを表示したり実行するのに必要な部分を書いているという意味を持っています。

image:plugin_puzzle.gif

プラグイン HTML 要素のコードの書かれ方はユーザがプラグインのピースをクリックしたときに取られる振る舞いを決めます。ブラウザが与えられた MIME タイプを扱えなかったときに、デフォルトのプラグインはメディアを定義する object 要素内で参照されるプラグインがあるかどうかを調べます。あれば、デフォルトのプラグインはユーザに指定された場所からプラグインをダウンロードするように促します。プラグインが object 要素内で指定されていなければ、デフォルトのプラグインは指定されたメディアタイプの扱い方についてのさらに特化した情報を提供するであろう、他の object 要素のような子要素を探します。

プラグイン表示のための HTML の使用

ユーザがプラグインを呼び出すウェブページを見るときにときに、プラグインが表示される(またはされない)方法は二つの要因に依存します:

  • 開発者によるプラグインの書き方はそれが独自のウィンドウ内に表示されるのかウィンドウを持たないのかを決めます。
  • プラグインを呼び出すためにコンテンツの提供者が HTML 要素を使う使い方はその表示モードを決めます。つまり、それがページ内に組み込まれるのか、部分の一部なのか、独自の分割されたページに表示されるのか、隠されるのか。

このセクションでは HTML 要素の使用と表示モードについて議論しています。ウィンドウの保持や非保持の操作についての情報に関しては、ウィンドウを持つプラグインと持たないプラグインを参照してください。

個々のプラグイン表示モードの説明とそれを実現するために使う HTML 要素については、プラグイン表示モードに行ってください。 HTML 要素とその属性についての詳細に関しては、以下に進んでください:

プラグイン表示モード

プラグインを表示する HTML を書いていようと HTML 製作者がページに含めるプラグインを開発していようと、どのように表示モードがプラグインの表示の仕方に影響を与えるのかを理解している必要があります。

プラグインは、ウィンドウを持つ持たないにかかわらず、以下の表示モードのうちの一つを取ります:

  • ウェブページに組み込まれていて表示
  • ウェブページに組み込まれていて非表示
  • 独自のウィンドウ内でフルページで表示される

組み込まれたプラグインは比較的大きい HTML ドキュメントの一部でありドキュメントが表示されるときに読み込まれます。(非表示なければ)プラグインは長方形のページの一部として表示されます。組み込みのプラグインは Adobe Flash プラグインのように、ページ内のテキストに関連付けられたマルチメディアの画像としてよく使われます。Gecko がドキュメント内で objectembed 要素に出くわすと、それはそれぞれ datasrc 属性によって表されるファイルを見つけて表示しようとします。object 要素の heightwidth 属性は HTML ページ内の組み込みプラグインの大きさを決めます。例えば、この object 要素はビデオを表示するプラグインを呼びます:

<object data="newave.avi" type="video/avi" 
        width="320" height="200"
        autostart="true" loop="true">
</object>

非表示のプラグインは呼ばれたときにスクリーン上に描画されない一種の組み込みのプラグインです。 embed 要素の hidden 属性を使うことで作成されます。ここに例があります:

<embed src="audiplay.aiff" type="audio/x-aiff" hidden="true">

: プラグインが hidden 属性とともに呼ばれるならばプラグインがウィンドウを持つかどうかは意味がありません。

object 要素を使うことによってでも非表示のプラグインを作成することができます。object 要素は hidden 属性を持たないけれども、object 要素の大きさの属性をオーバーライドする CSS 規則を作成することができます。

object {
  visibility: visible;
}

object.hiddenObject {
  visibility:   hidden !important;
  width:        0px    !important;
  height:       0px    !important;
  margin:       0px    !important;
  padding:      0px    !important;
  border-style: none   !important;
  border-width: 0px    !important;
  max-width:    0px    !important;
  max-height:   0px    !important;
}

この場合、これらの特別な定義を受け取る object 要素は非表示の class を取るでしょう。Using the class 属性と以上の CSS ブロックを使うことで、embed 要素内での非表示のプラグインの振る舞いを真似ることができます:

  <object data="audiplay.aiff" type="audio/x-aiff" class="hiddenObject"></object>

フルページプラグインは HTML ページの一部ではない表示のプラグインです。サーバーはファイル拡張子に基づいて、プラグインによって登録されたメディア (MIME) を探して、ブラウザにファイルを送り始めます。Gecko は MIME タイプを調べてそのタイプに対して登録されたプラグインを見つけると適切なプラグインを読み込みます。この種のプラグインはウェブページを満たします。フルページプラグインは Adobe Acrobat のように、ドキュメントビュアーによく使われます。

: ブラウザはフルページプラグインに対して自動的にスクロールバーを表示しません。プラグインはそれが必要ならば独自のスクロールバーを描画しなければなりません。

ブラウザのユーザインターフェイスはどのプラグインが表示されているの可にかかわらず比較的一定のままです。プラグインデータを表示しないアプリケーションウィンドウの一部は変わりません。プラグインの使用にかかわらず、移動、履歴、ファイルのオープンのような、ブラウザの基本的な操作はすべてのページに適用されます。

プラグイン表示のための object 要素の使用

object 要素はウェブページ内の特別なメディアを一般的に含めるための HTML 仕様の一部です。それは、プラグイン、Java コンポーネント、ActiveX コントロール、アプレットや画像を含む、多様なオブジェクトタイプを HTML ページ内に組み込みます。object 要素の属性は組み込むオプジェクトのタイプ、オブジェクトの実装(コード)のタイプと場所やオブジェクトのデータのタイプと実装を決めます。

プラグインは元々 object 要素よりも embed 要素とともに機能するように設計されました(プラグイン表示のための embed 要素の使用を参照してください)。しかし object 要素それ自体はここでいくらかの柔軟性を提供します。特に、ブラウザが要素によって呼び出されたオブジェクトをサポートできないならば、object 要素によって他のオブジェクトを呼び出せます。共にプラグインに対して使われる embed 要素はそうではありません。

object 要素は HTML W3C 標準 の一部でもあります。

また、applet 要素とは異なり、object は開きタグと閉じタグの間で入れ子にされた、他の object 要素を含む他の HTML 要素を含めることができます。だから、例えば、Gecko は - ページに組み込まれた Java クラスや ActiveX プラグインに対して使われる - object 要素の classid 属性をサポートしていないけれども、異なるプラグイン実装をサポートするために object 要素は入れ子にすることができます。

プラグインへの ActiveX コントロールの組み込みや ActiveX アプリケーションへのプラグインの組み込みについての更なる情報に関しては以下のプラグインリファレンスセクション内の Mozilla ActiveX プロジェクトページを参照してください。

以下の例では Gecko により適合したマークアップがされており、親 object 要素の子として含む、入れ子になった object 要素の使用法を示しています。

例 1: 入れ子の object 要素

<html>
<head>
<title>例 1: 入れ子の object 要素</title>
<style type="text/css">
  .myPlugin {
     width:  470px;
     height: 231px;
  }
</style>
</head> 
<body><p>
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
        codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,30,0" 
        class="myPlugin">
 
  <param name="movie" value="foo.swf"/>
  <param name="quality" value="high"/>
  <param name="salign" value="tl"/>
  <param name="menu" value="0"/>
 
       <object data="foo_movie.swf"
               type="application/x-shockwave-flash"
               class="myPlugin"/>
 
         <param name="quality" value="high"/>
         <param name="salign" value="tl"/>
         <param name="menu" value="0"/>
 
          <object type="*" class="myPlugin">
            <param name="pluginspage" 
                   value="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"/>
          </object>
 
       </object>
</object>
</p></body>
</html>

最も外側の object 要素は classid を定義しています。一番目の入れ子にされた object は Adobe Flash プラグインを読み込むために type の値 application/x-shockwave-flash を使い、最も内側の object はまだ必要なプラグインを持っていないユーザのためにダウンロードページをさらしています。この入れ子は object 要素の使用法としてはかなりよくあるもので、異なるブラウザに対してコードをフォークするのを避けられます。

Nesting Rules for HTML Elements

The rules for descending into nested object and embed elements are as follows:

  • The browser looks at the MIME type of the top element. If it knows how to deal with that MIME type (i.e., by loading a plug-in that's been registered for it), then it does so.
  • If the browser cannot handle the MIME type, it looks in the element for a pointer to a plug-in that can be used to handle that MIME type. The browser downloads the requested plug-in.
  • If the MIME type is unknown and there is no reference to a plug-in that can be used, the browser descends into the child element, where these rules for handling MIME types are repeated.

The rest of this section is a brief introduction to this HTML element. For more information on the object element and other elements used for plug-in display, see W3C HTML 4.01 specification.

To embed a variety of object types in an HTML page, use the object element.

<object
  classid="classFile"
  data="dataLocation"
  codebase="classFileDir"
  type="MIMEtype"
  align="alignment" 
  height="pixHeight" 
  width="pixWidth"
  id="name"
 >

...

</object>

The first set of object element attributes are URLs.

  • classid is the URL of the specific object implementation. This attribute is similar to the code attribute of the applet element. Though Gecko does not support this object attribute, you can nest object elements with different attributes to use the object element for embedding plug-ins on any browser platform (see the example above).
  • data represents the URL of the object's data; this is equivalent to the src attribute of embed.
  • codebase represents the URL of the plug-in; this is the same as the codebase attribute of the applet element. For plug-ins, codebase is the same as pluginspace.
  • type represents the MIME type of the plug-in; this is the same as the type attribute of embed.
  • height, width, align are basic img/embed/applet attributes supported by object. height and width are required for object elements that resolve to embed elements.
  • Use the id attribute, which specifies the name of the plug-in, if the plug-in is communicating with JavaScript. This is equivalent to the name attribute of applet and embed. It must be unique.

Using the Appropriate Attributes

It's up to you to provide enough attributes and to make sure that they do not conflict; for example, the values of width and height may be wrong for the plug-in. Otherwise, the plug-in cannot be embedded.

Gecko interprets the attributes as follows: When the browser encounters an object element, it goes through the element attributes, ignoring or parsing as appropriate. It analyzes the attributes to determine the object type, then determines whether the browser can handle the type.

  • If the browser can handle the type-that is, if a plug-in exists for that type-then all elements and attributes up to the closing </object> element, except param elements and other object elements, are filtered.
  • If the browser cannot handle the type, or cannot determine the type, it cannot embed the object. Subsequent HTML is parsed as normal.

Using the embed Element for Plug-in Display

A plug-in runs in an HTML page in a browser window. The HTML author uses the HTML embed element to invoke the plug-in and control its display. Though the object element is the preferred way to invoke plug-ins (see Using the object Element for Plug-in Display), the embed element can be used for backward compatibility with Netscape 4.x browsers, and in cases where you specifically want to prompt the user to install a plug-in, because the default plug-in is only automatically invoked when you use the embed element.

Gecko loads an embedded plug-in when the user displays an HTML page that contains an embedded object whose MIME type is registered by a plug-in. Plug-ins are embedded in much the same way as GIF or JPEG images are, except that a plug-in can be live and respond to user events, such as mouse clicks.

The embed element has the following syntax and attributes:

<embed 
  src="location"
  type="mimetype"
  pluginspage="instrUrl"
  pluginurl="pluginUrl"
  align="left"|"right"|"top"|"bottom"
  border="borderWidth" 
  frameborder="no"
  height="height" 
  width="width"
  units="units"
  hidden="true|false"
  hspace="horizMargin" 
  vspace="vertMargin" 
  name="pluginName"
  palette="foreground"|"background"
 >
 
...
 
</embed>

You must include either the src attribute or the type attribute in an embed element. If you do not, then there is no way of determing the media type, and so no plug-in loads.

The src attribute is the URL of the file to run. The type attribute specifies the MIME type of the plug-in needed to run the file. Navigator uses either the value of the type attribute or the suffix of the filename given as the source to determine which plug-in to use.

Use type to specify the media type or MIME type necessary to display the plug-in. It is good practice to include the MIME type in all the plug-in HTML elements. You can use type for a plug-in that requires no data, for example, a plug-in that draws an analog clock or fetches all of its data dynamically. For a visible plug-in, you must include width and height if you use type; no default value is used.

The pluginurl attribute is the URL of the plug-in or of the XPI in which the plug-in is stored (see Installing Plug-ins for more information on the XPI file format).

The embed element has a number of attributes that determine the appearance and size of the plug-in instance, including these:

  • The border and frameborder attributes specify the size of a border for the plug-in or draw a borderless plug-in
  • height, width, and units determine the size of the plug-in in the HTML page. If the plug-in is not hidden, the height and width attributes are required.
  • hspace and vspace create a margin of the specified width, in pixels, around the plug-in.
  • align specifies the alignment for the plug-in relative to the web page.

Use the hidden attribute if you do not want the plug-in to be visible. In this case, you do not need the attributes that describe plug-in appearance. In fact, hidden overrides those attributes if they are present.

Use the name attribute, which specifies the name of the plug-in or plug-in instance, if the plug-in is communicating with JavaScript.

For example, this embed element loads a picture with the imaginary data type dgs.

<embed src="mypic.dgs" width="320" height="200" border="25" align="right">

Gecko interprets the attributes as follows:

  • src: Load the data file and determine the MIME type of the data.
  • width and height: Set the area of the page handled by the plug-in to 320 by 200 pixels. In general, use CSS to control the size and location of elements within an HTML page.
  • border: Draw a border 25 pixels wide around the plug-in.
  • align: Align the plug-in at the right side of the web page.

The following example shows an embed element nested within an object element, which latter is necessary for browsers that do not support the embed element.

Example 2: embed within object

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" 
   codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,30,0" 
   width="749" height="68">

 <param name="movie" value="foo.swf">
 <param name="quality" value="high">
 <param name="bgcolor" value="#EEEEEE">
 <param name="salign" value="tl">
 <param name="menu" value="0">
 
 <embed src="foo.swf" 
   quality="high" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" 
   type="application/x-shockwave-flash" 
   width="749" 
   height="68" 
   bgcolor="#EEEEEE" 
   salign="tl" 
   menu="0">
 
 </embed>
 
</object>

Using Custom embed Attributes

In addition to these standard attributes, you can create private, plug-in-specific attributes and use them in the embed attribute to pass extra information between the HTML page and the plug-in code. The browser ignores these nonstandard attributes when parsing the HTML, but it passes all attributes to the plug-in, allowing the plug-in to examine the list for any private attributes that could modify its behavior.

For example, a plug-in that displays video could have private attributes that determine whether to start the plug-in automatically or loop the video automatically on playback, as in the following embed element:

<embed src="myavi.avi" width="100" height="125" autostart="true" loop="true">


With this embed element, Gecko passes the values to the plug-in, using the arg parameters of the NPP_New call that creates the plug-in instance.

argc = 5
argn = {"src", "width", "height", "autostart", "loop"}
argv = {"movie.avi", "100", "125", "true", "true"}

Gecko interprets the attributes as follows:

  • src: Load the data file and determine the MIME type of the data.
  • width and height: Set the area of the page handled by the plug-in to 100 by 125 pixels.
  • autostart and loop: Ignore these private attributes and pass them along to the plug-in with the rest of the attributes.

The plug-in must scan its list of attributes to determine whether it should automatically start the video and loop it on playback. Note that with an object element, param values are also sent in this array after the attributes, separated by a param entry.

プラグインリファレンス

ドキュメントのタグと貢献者

Contributors to this page: Marsf, Nog
最終更新者: Marsf,