▼Adobe AIRメモ▼
はじめてのHTMLアプリケーション


はじめてのHTMLアプリケーションを作成する。

リソース
LocalFile.txt
これはローカルファイルです。


ソースコード
HelloWorld.html
<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>

SimpleUI.html
<html>
    <head>
        <script type="text/javascript">
            //テキストを戻す
            function forApplicationSandbox() {
                return "クラシックサンドボックスのテキスト";
            }
            
            function doLoad() {
                //アプリケーションサンドボックスに関数を公開
                childSandboxBridge={'callMe': forApplicationSandbox};
            }
        </script>
    </head>
    
    <body onload="doLoad()">
        <h3>クラシックサンドボックス</h3>        

        <ul>
            <li>
                Webブラウザと同じセキュリティモデル
                <ul>
                    <li>
                        eval()を利用可能
                    </li>
                    <li>
                        外部JavaScriptファイルを利用可能
                    </li>
                </ul>
            </li>

            <li>AIR APIは利用不可</li>

            <li>アプリケーションサンドボックスの公開関数を呼ぶことが可能            
                <br/> <input type="button" onclick="alert(parentSandboxBridge.readLocalFile())" 
                  value="AIR APIによるローカルファイル読み込み"/>
            </li>

            <li>アプリケーションサンドボックスに関数を公開可能</li>
        </ul>
    
    </body>
</html>



−戻る−