最近项目中用到了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。
时间: 2024-10-30 03:52:43