標籤:
最近項目中用到了Air讀取JS檔案的需求,研究了一下,給大家分享下。
Air中提供HTMLLoader 類,可以讀取Html檔案中的js方法,當你把Html載入進來的時候,就可以通過HTMLLoader擷取js檔案中提供的屬性以及方法,
具體操作如下。
寫AS檔案
private var html:HTMLLoader = new HTMLLoader(); private var urlReq:URLRequest = new URLRequest("assets/test.html"); private function startLoadJS():void{ html.addEventListener(Event.COMPLETE, loadComplete); html.load(urlReq); }private function loadComplete(e:Event):void{ trace(html.window.bbq); trace(html.window.transToDB("一條彎彎的河"));}
再寫一個HTML檔案放置在aeests目錄下,檔案中可以只含也可以包含JS代碼
<script> var bbq = "O,THANK YOU" function transToDB(str){ return "哥哥面前"+str; }</script>
運行結果:
“O,THANK YOU“"哥哥面前一條彎彎的河”
當我嘗試把test.html修改名稱為test.js或者其它副檔名,就無法實現
官方解釋:在案頭電腦上(在案頭和擴充的案頭設定檔中),HTMLLoader 類使用內部 AIR WebKit 引擎。
其可用的功能和呈現外觀與 StageWebView 類相同,並且在 ActionScript 和 javascript 之間實現了緊密整合和指令碼橋接。
由於 StageWebView 類使用 Flash Player 外掛程式提供的系統 web 控制項,因此強烈建議不要同時使用 StageWebView 和 HTMLLoader 執行個體,否則會發生未定義的行為,從而可能使應用程式終止運行。
可見,想讀取js內方法,只能支援副檔名為Html。
Air中讀取JavaScript的方法