externalinterface - вызов JavaScript из SWF - PullRequest
0 голосов
/ 19 мая 2009

HI

я пытаюсь вызвать функцию javascript из моего кода ActionScript, но она не работает;

as3:

if (ExternalInterface.available)
  {
  try
  {
    ExternalInterface.addCallback("changeDocumentTitle",null);
  } 
  catch(error:Error)

js (внутри файла скорости с использованием swfobject)

function changeDocumentTitle() 
    {
        alert('call from SWF');
    }

Кто-нибудь знает, что может случиться?

Ответы [ 2 ]

7 голосов
/ 19 мая 2009

Если вы пытаетесь вызвать функцию JS из приложения Flex, вы хотите использовать ExternalInterface.call (...), а не ExternalInterface.addCallback (...). Из документов:

открытый вызов статической функции (functionName: String, ... arguments): *

Вызывает функцию, предоставляемую контейнером Flash Player, передавая ноль или более аргументов. Если функция недоступна, вызов возвращает null; в противном случае он возвращает значение, предоставленное функцией. Рекурсия не разрешена в браузерах Opera или Netscape; в этих браузерах рекурсивный вызов дает нулевой ответ. (Рекурсия поддерживается в браузерах Internet Explorer и Firefox.)

Если контейнер представляет собой страницу HTML, этот метод вызывает функцию JavaScript в элементе сценария.

http://livedocs.adobe.com/flex/3/langref/flash/external/ExternalInterface.html

addCallback () используется, если вы хотите представить функцию ActionScript из приложения Flash в контейнере HTML, чтобы ее можно было вызывать с помощью JavaScript.

0 голосов
/ 19 мая 2009

В локальной системе связь между SWF и Javascript, как правило, затрудняется проблемами безопасности. Вы можете перенастроить свою флэш-память, чтобы разрешить некоторые из этих сообщений через «менеджер настроек».

Также может быть проблема с тем, что «allowcriptacces» не установлен там, где вы встраиваете flash-объект.

Другая проблема может заключаться в том, что flash пытается вызвать javascript перед загрузкой javascript. Порядок инициализации может быть довольно раздражающим.

...