Улучшение взаимодействия с JavaScript с помощью JSInterface

Flex cookbook entry: Improvement of interaction with JavaScript.

Библиотека JSInterface облегчает взаимодействие между Flash приложением и JavaScript средой. С её помощью разработчик может делать то же самое что и в JavaScript, только обычными средствами ActionScript. В отличии от ExternalInterface, он предоставляет стандартный интерфейс для доступа к объектам, их свойствам и методам.

Можно создавать JavaScript объекты, как обычные ActionScript объекты и использовать их в ActionScript коде - изменять значения их свойств и вызывать их методы:

  1. import aw.external.jsinterface.JSDynamic;
  2. import aw.external.jsinterface.objects.JSArray;
  3. var javaScriptArray:JSArray = new JSArray();
  4. javaScriptArray[0] = true;
  5. trace(javaScriptArray.length);
  6. /*
  7. 1
  8. */
  9.  
  10. var javaScriptObject:JSDynamic = new JSDynamic('Object');
  11. javaScriptObject.property1 = true;
  12. javaScriptObject.property2 = true;
  13. for(var name:String in javaScriptObject){
  14. trace(name, "=", javaScriptObject[name]);
  15. }
  16. /*
  17. property1 = true
  18. property2 = true
  19. */
  20. С помощью JSInterface, вы можете создавать JavaScript функции
  21. import aw.external.jsinterface.JSFunction;
  22.  
  23. var flashFriendlyAlert:Function = JSFunction.create(
  24. "setTimeout(alert, 1, text);",
  25. ["text"]
  26. );
  27. flashFriendlyAlert("Simple Alert message.");

И присваивать Flash функции, как функции обратного вызова для JavaScript событий.

Для основных задач JSInterface имеет такие методы, как set/getCookie, set/getTitle, set/getHash, getLocaltion.

  1. JSInterface.setTitle("My title");
  2. trace("Title:", JSInterface.getTitle());
  3. /*
  4. Title: My title
  5. */
  6. JSInterface.setCookie("tempCookie", "temp cookie value");
  7. trace("Cookie:", JSInterface.getCookie("tempCookie"));
  8. /*
  9. Cookie: temp cookie value
  10. */
  11. trace("Location:", JSInterface.getLocation());
  12. /*
  13. Location: file:///Z:/home/localhost/www/...
  14. */
  15. JSInterface.setLocationHash("MyLocationHash/root/debug");
  16. trace("Location hash:", JSInterface.getLocationHash());
  17. /*
  18. Location hash: #MyLocationHash/root/debug
  19. */

Более подробно можно узнать на официальном сайте JSInterface и в документации.

Метки: , , ,

Добавить комментарий

Вы должны авторизоваться для отправки комментария.