Вызов функции JavaScript из веб-приложения Flex 4 - PullRequest
0 голосов
/ 19 октября 2010

Мне нужно вызвать функцию javascript из веб-приложения на основе Flash 4.Когда я запускаю его в режиме отладки, он работает отлично, но когда я делаю сборку релиза или запускаю то же приложение на другом компьютере, он не вызывает функцию JavaScript.

Для тестирования я просто вызываю пример функции оповещения JavaScript.Может ли кто-нибудь помочь мне, что мне не хватает?

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
    layout="vertical" initialize="application1_initializeHandler(event)"
    verticalAlign="middle"
    backgroundColor="white">

 <mx:Script>
  <![CDATA[
   import mx.controls.Alert;
   import mx.events.FlexEvent;
   public function btnLogin_click():void 
   {
    var s:String;    
    if (ExternalInterface.available) 
    {     
         ExternalInterface.call("alert", "Hello World!"); 
    } 
    else 
    {
     Alert.show("External interface not available");
    }
    trace(s); 
   }

   protected function application1_initializeHandler(event:FlexEvent):void
   {
    flash.system.Security.allowDomain("always");
   }

  ]]>
 </mx:Script>

 <mx:Form>       
  <mx:FormItem>        
   <mx:Button id="btnLogin" label="Login" click="btnLogin_click()" />        
  </mx:FormItem>       
 </mx:Form>

</mx:Application>

Ответы [ 4 ]

1 голос
/ 20 октября 2010

Вы пробовали выполнить тест, подобный (Flex):

ExternalInterface.call("alertFn");

И JS:

function alertFn() {
    alert("hello world");
}

?

Я никогда не пробовал вызов ExternalInterface длявстроенная функция JS, такая как «alert» ...

1 голос
/ 20 октября 2010

Ну, во-первых, убедитесь, что JavaScript на вашем тестовом компьютере включен, а затем также убедитесь, что вы добавляете файл / код JavaScript после добавления файла swfobject.js.

У меня была похожая проблема, но она работалакогда я переместил swfobject.js на вершину всех включений js.

0 голосов
/ 06 июня 2015

test.mxml ..........

     protected function bt1_clickHandler(event:MouseEvent):void
        {

            // TODO Auto-generated method stub
            ExternalInterface.call("callUnity");
        }

.js ....

 function callflex(){

 alert("got it");
  }
0 голосов
/ 15 июня 2012

После выкапывания кода ошибки 2060 через

Alert.show(e.message)

Я понял, что по какой-то причине ExternalInterface.call не работает на file:// и нуждается в http(s)://

Итак, любой, кто сталкивается с этой проблемой, приобретет для себя веб-сервер ( Apache ) или GAE для тестирования подобных вещей и спасет себя от " Экстремальные потери времени ":

У меня были бесконечные часы проблем с использованием file: // с Flex AJAX Bridge.

AJAX-код молча будет сбоить во время инициализации SWF обратные вызовы к коду AJAX. Я бы тогда имел нулевые значения для всех корневые элементы SWF.

Как только я установил веб-сервер и начал использовать http: // localhost все работало отлично.

Экстремальные потери времени: (

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...