<html>
<head>
<script type="text/javascript" src="AIRAliases.js">
</script>
<script type="text/javascript">
//AIR APIによるローカルファイル読み込み
function readLocalFile(){
var f = air.File.applicationDirectory.resolvePath("LocalFile.txt");
var fs = new air.FileStream();
fs.open(f, air.FileMode.READ);
var content = fs.readUTFBytes(fs.bytesAvailable);
fs.close();
return content;
}
//クラシックサンドボックスに公開する関数配列配列
var Exposed = {};
//トレース
Exposed.trace = function(str){
air.trace(str);
}
//ローカルファイル読み込み
Exposed.readLocalFile = readLocalFile;
function doLoad(){
//クラシックサンドボックスに関数を公開
var frame = document.getElementById('UI'
).contentWindow.parentSandboxBridge = Exposed;
//クラシックサンドボックスから公開された関数を取得
window.callMe = document.getElementById('UI'
).contentWindow.childSandboxBridge.callMe;
}
</script>
</head>
<body onload="doLoad();">
<h3>アプリケーションサンドボックス</h3>
<ul>
<li>
AIR APIを利用可能<br/>
<input type="button" onclick="alert(readLocalFile())"
value="AIR APIによるローカルファイル読み込み"/>
</li>
<li>
eval()は利用不可
</li>
<li>
外部JavaScriptファイルはアプリケーションフォルダ内のもののみ利用可能
</li>
<li>
コンテンツウィンドウのparentSandboxBridgeプロパティ<br/>
クラシックサンドボックスに関数を公開可能
</li>
<li>
コンテンツウィンドウのchildSandboxBridgeプロパティ<br/>
クラシックサンドボックスの公開関数を呼ぶことが可能<br/>
<input type="button" onclick="alert(callMe())"
value="クラシックサンドボックスの関数を呼ぶ"/>
</li>
</ul>
<iframe id="UI"
src="SampleUI.html"
sandboxRoot="http://SomeRemoteDomain.com/"
documentRoot="app:/"
width="100%"
height="100%"
style="border: 1px solid red; margin: 0px; padding: 0px; width: 100%; height: 300px">
</iframe>
</body>
</html>
|