Flex cookbook entry: Loading of additional JS and CSS files in the HTML document.
JSInterface позволяет загружать внешние JavaScript и CSS файлы прямо в HTML страницу. Для этого необходимо указать URL файла и функцию обратного вызова, вызываемую по окончанию загрузки.
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="20" height="20" preinitialize="{JSInterface.initialize()}" creationComplete="{creationCompleteHandler(event)}"> <mx:Script> <![CDATA[ import aw.external.JSInterface; protected const JAVA_SCRIPT_FILE:String = "jquery-1.2.6.js"; protected const CSS_FILE:String = "main.css"; protected function creationCompleteHandler(event:Event):void{ JSInterface.loadJavaScript(JAVA_SCRIPT_FILE, this.javaScriptLoadCompleteHandler); JSInterface.loadCSS(CSS_FILE, this.CSSLoadCompleteHandler); } protected var $:Function; protected function javaScriptLoadCompleteHandler(event:Object=null):void{ trace("JavaScript loaded!"); $ = JSInterface.window.$; trace($("FONT")[0].innerHTML); } // FireFox will not call onload handler for <LINK/> tag protected function CSSLoadCompleteHandler(event:Object=null):void{ trace("CSS loaded!"); } ]]> </mx:Script> </mx:Application>
После загрузки JavaScript файла, загруженный код может использовать JavaScript код находящийся в HTML странице и все Flash приложения этой страницы.
Браузер FireFox не обрабатывает событие загрузки CSS - onload и поэтому переданная функция не будет вызвана. Для определения окончания загрузки CSS файла в FireFox можно использовать таймауты и, к примеру, проверять существование специфического стиля.
Посетить официальный сайт JSInterface.
Метки: css, Flash, Flex, HTML, JavaScript, js, JSInterface