HTML 環境の概要

Adobe AIR 1.0 およびそれ以降

Adobe AIR では、HTML レンダラー、ドキュメントオブジェクトモデルおよび JavaScript インタプリタを備えた、完全なブラウザー形式の JavaScript 環境を提供します。この JavaScript 環境を表すのが、AIR の HTMLLoader クラスです。HTML ウィンドウでは、HTMLLoader オブジェクトはすべての HTML コンテンツを格納し、そのオブジェクト自体が NativeWindow オブジェクト内に格納されます。SWF コンテンツでは、Sprite クラスを拡張する HTMLLoader クラスは、他の表示オブジェクトと同様にステージの表示リストに追加できます。このクラスの Adobe® ActionScript® 3.0 プロパティについては、 AIR HTML コンテナのスクリプト作成 および『 Adobe Flash Platform 用 ActionScript 3.0 リファレンスガイド 』で説明されています。Flex フレームワークでは、AIR の HTMLLoader クラスを mx:HTML コンポーネントでラップします。mx:HTML コンポーネントは、UIComponent クラスを拡張するので、他の Flex コンテナで直接使用できます。mx:HTML コンポーネント内での JavaScript 環境は、それ以外の点は同一です。

JavaScript 環境および AIR ホストとの関係について

次の図に、JavaScript 環境と AIR ランタイム環境の関係を示します。1 つのネイティブウィンドウしか示されていませんが、AIR アプリケーションには複数のウィンドウを含めることができます(また、1 つのウィンドウに複数の HTMLLoader オブジェクトを含めることができます)。

フルサイズのグラフィックを表示
JavaScript 環境には、独自の Document オブジェクトと Window オブジェクトがあります。JavaScript コードでは、runtime、nativeWindow、htmlLoader の各プロパティを使用して、AIR ランタイム環境を操作できます。ActionScript コードでは、JavaScript の Window オブジェクトを参照する、HTMLLoader オブジェクトの window プロパティを使用して、JavaScript 環境を操作できます。また、ActionScript オブジェクトと JavaScript オブジェクトの両方で、AIR オブジェクトと JavaScript オブジェクトから送出されたイベントをリッスンできます。

runtime プロパティは AIR API クラスへのアクセスを提供します。このプロパティを使用すると、クラスメンバー(静的メンバー)にアクセスできるだけでなく、新しい AIR オブジェクトを作成することもできます。AIR API にアクセスするには、package を使用して、クラスの名前を runtime プロパティに追加します。例えば、File オブジェクトを作成するには、次のステートメントを使用します。

var file = new window.runtime.filesystem.File();
注意: AIR SDK には、 AIRAliases.js という JavaScript ファイルが付属しており、このファイルでは、最もよく使用される AIR クラスの便利なエイリアスが定義されています。このファイルを読み込むと、window.runtime.package.Class の代わりに、短い形式の air.Class を使用できます。例えば、 new air.File() を使用して File オブジェクトを作成することもできます。

NativeWindow オブジェクトには、デスクトップウィンドウを制御するためのプロパティが用意されています。HTML ページ内から、 window.nativeWindow プロパティを使用して、コンテナとなっている NativeWindow オブジェクトにアクセスできます。

HTMLLoader オブジェクトには、コンテンツを読み込んでレンダリングする方法を制御するためのプロパティ、メソッドおよびイベントが用意されています。HTML ページ内から、 window.htmlLoader プロパティを使用して、親 HTMLLoader オブジェクトにアクセスできます。

重要: htmlLoader nativeWindow runtime の各プロパティを使用できるのは、アプリケーションの一部としてインストールされたページのみで、トップレベルドキュメントとして読み込まれた場合だけです。これらのプロパティは、ドキュメントがフレームまたはインラインフレームに読み込まれた場合には追加されません(子ドキュメントは、同じセキュリティサンドボックスにある限り、親ドキュメントのこれらのプロパティにアクセスできます。例えば、フレームに読み込まれたドキュメントでは、 parent.runtime を使用して、その親の runtime プロパティにアクセスできます)。

セキュリティについて

AIR では、すべてのコードは、元のドメインに基づいてセキュリティサンドボックス内で実行されます。アプリケーションコンテンツ(アプリケーションのインストールディレクトリから読み込まれたコンテンツに限定)は、 アプリケーション サンドボックスに配置されます。ランタイム環境および AIR API へのアクセスは、このサンドボックス内で実行される HTML および JavaScript からのみ可能です。その際、ページの load イベントのすべてのハンドラーから処理が戻った後、JavaScript の動的な評価と実行の多くはアプリケーションサンドボックス内でブロックされます。

アプリケーションページを非アプリケーションサンドボックスにマップするには、ページをフレームまたはインラインフレームに読み込み、そのフレームの AIR 固有の sandboxRoot 属性と documentRoot 属性を設定します。 sandboxRoot 値を実際のリモートドメインに設定すると、サンドボックスに割り当てたコンテンツで、そのドメインのコンテンツをクロススクリプトできるようになります。この方法によるページのマッピングは、 マッシュアップ アプリケーションなどで、リモートコンテンツの読み込みおよびスクリプト作成を行う場合に役立ちます。

アプリケーションおよび非アプリケーションのコンテンツで互いにクロススクリプトできるようにするもう 1 つの方法、また非アプリケーションコンテンツから AIR API にアクセスできるようにする唯一の方法は、 サンドボックスブリッジ を作成することです。 親から子へ のブリッジを使用すると、アプリケーションサンドボックスで定義されている指定のメソッドとプロパティに、子のフレーム、インラインフレームまたはウィンドウのコンテンツからアクセスできます。逆に、 子から親へ のブリッジを使用すると、子のサンドボックスで定義されている指定のメソッドとプロパティに、アプリケーションコンテンツからアクセスできます。サンドボックスブリッジを確立するには、ウィンドウオブジェクトの parentSandboxBridge プロパティと childSandboxBridge プロパティを設定します。詳しくは、 Adobe AIR の HTML セキュリティ および HTML の frame エレメントと iframe エレメント を参照してください。

プラグインと埋め込みオブジェクトについて

AIR では、Adobe® Acrobat® プラグインをサポートしています。PDF コンテンツを表示するには、ユーザーは、Acrobat または Adobe® Reader® 8.1 以上を使用する必要があります。HTMLLoader オブジェクトには、ユーザーのシステムで PDF を表示できるかどうかをチェックするためのプロパティが用意されています。SWF ファイルコンテンツも HTML 環境内で表示できますが、この機能は AIR に組み込まれており、外部プラグインは必要ありません。

その他の Webkit プラグインは、AIR ではサポートされていません。