フレームの
dominitialize
イベントのイベントハンドラーを指定します。このイベントは、AIR 固有のイベントで、フレームのウィンドウオブジェクトおよびドキュメントオブジェクトが作成されたときに発生します。ただし、スクリプトが解析されたり、ドキュメントエレメントが作成されたりする前に発生します。
フレームは、
dominitialize
ハンドラーによって子ドキュメントに追加されたオブジェクト、変数および関数を子ページのスクリプトで参照できる読み込み順序で、
dominitialize
イベントを十分早期に送出します。子ドキュメントのオブジェクトについて、直接追加したり、アクセスしたりするには、親ページが子と同じサンドボックスに含まれている必要があります。ただし、アプリケーションサンドボックス内の親で、サンドボックスブリッジを確立して、非アプリケーションサンドボックス内のコンテンツと通信できます。
次の例に、AIR での iframe タグの使用を示します。
child.html
を、リモートサーバーの実際のドメインにマップせずに、リモートサンドボックスに配置します。
<iframe src="http://localhost/air/child.html"
documentRoot="app:/sandbox/"
sandboxRoot="http://localhost/air/"/>
child.html
をリモートサンドボックスに配置し、
www.example.com
への XMLHttpRequest のみ許可します。
<iframe src="http://www.example.com/air/child.html"
documentRoot="app:/sandbox/"
sandboxRoot="http://www.example.com/air/"/>
child.html
をリモートサンドボックスに配置し、任意のリモートドメインへの XMLHttpRequest を許可します。
<iframe src="http://www.example.com/air/child.html"
documentRoot="app:/sandbox/"
sandboxRoot="http://www.example.com/air/"
allowCrossDomainXHR="allowCrossDomainXHR"/>
child.html
を local-with-file-system サンドボックスに配置します。
<iframe src="file:///templates/child.html"
documentRoot="app:/sandbox/"
sandboxRoot="app-storage:/templates/"/>
child.html
をリモートサンドボックスに配置し、
dominitialize
イベントを使用してサンドボックスブリッジを確立します。
<html>
<head>
<script>
var bridgeInterface = {};
bridgeInterface.testProperty = "Bridge engaged";
function engageBridge(){
document.getElementById("sandbox").parentSandboxBridge = bridgeInterface;
}
</script>
</head>
<body>
<iframe id="sandbox"
src="http://www.example.com/air/child.html"
documentRoot="app:/"
sandboxRoot="http://www.example.com/air/"
ondominitialize="engageBridge()"/>
</body>
</html>
次の
child.html
ドキュメントは、子コンテンツから親サンドボックスブリッジにアクセスする方法を示しています。
<html>
<head>
<script>
document.write(window.parentSandboxBridge.testProperty);
</script>
</head>
<body></body>
</html>
詳しくは、
異なるセキュリティサンドボックス内のコンテンツのクロススクリプト
および
Adobe AIR の HTML セキュリティ
を参照してください。