Flex cookbook entry: Improvement of interaction with JavaScript.
Библиотека JSInterface облегчает взаимодействие между Flash приложением и JavaScript средой. С её помощью разработчик может делать то же самое что и в JavaScript, только обычными средствами ActionScript. В отличии от ExternalInterface, он предоставляет стандартный интерфейс для доступа к объектам, их свойствам и методам.
Можно создавать JavaScript объекты, как обычные ActionScript объекты и использовать их в ActionScript коде - изменять значения их свойств и вызывать их методы:
import aw.external.jsinterface.JSDynamic; import aw.external.jsinterface.objects.JSArray; var javaScriptArray:JSArray = new JSArray(); javaScriptArray[0] = true; trace(javaScriptArray.length); /* 1 */ var javaScriptObject:JSDynamic = new JSDynamic('Object'); javaScriptObject.property1 = true; javaScriptObject.property2 = true; for(var name:String in javaScriptObject){ trace(name, "=", javaScriptObject[name]); } /* property1 = true property2 = true */ С помощью JSInterface, вы можете создавать JavaScript функции import aw.external.jsinterface.JSFunction; var flashFriendlyAlert:Function = JSFunction.create( "setTimeout(alert, 1, text);", ["text"] ); flashFriendlyAlert("Simple Alert message.");
И присваивать Flash функции, как функции обратного вызова для JavaScript событий.
Для основных задач JSInterface имеет такие методы, как set/getCookie, set/getTitle, set/getHash, getLocaltion.
JSInterface.setTitle("My title"); trace("Title:", JSInterface.getTitle()); /* Title: My title */ JSInterface.setCookie("tempCookie", "temp cookie value"); trace("Cookie:", JSInterface.getCookie("tempCookie")); /* Cookie: temp cookie value */ trace("Location:", JSInterface.getLocation()); /* Location: file:///Z:/home/localhost/www/... */ JSInterface.setLocationHash("MyLocationHash/root/debug"); trace("Location hash:", JSInterface.getLocationHash()); /* Location hash: #MyLocationHash/root/debug */
Более подробно можно узнать на официальном сайте JSInterface и в документации.
Метки: Flash, Flex, JavaScript, JSInterface