Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   JScript to Flash, если флешка грузится динамически (https://javascript.ru/forum/misc/6039-jscript-flash-esli-fleshka-gruzitsya-dinamicheski.html)

ExtendedPlay 07.11.2009 16:32

JScript to Flash, если флешка грузится динамически
 
Привет всем!

Если кто работает с флешем или просто знает решение проблемы - отпишитесь, пожалуйста.

Столкнулся с интересной задачкой - передача строки из Ява-скрипта во Флеш.

Итак, во флешке прописано:
Код:

ExternalInterface.addCallback('toFlash', null, fromJS);
function fromJS(t){// и тд

В Ява-скрипте:
Код:

function toFlash(someData){
    var myFL = (navigator.appName.indexOf("Microsoft")!=-1 ? window : document)["flashka"];
    myFL.toFlash(someData);
}

Если флешка (<object... <embed... и тд) прописывается сразу в HTML-коде страницы, то данная конструкция работает идеально во всех браузерах.
Однако, если флешка создается в коде страницы динамически, то работает везде, кроме IE (проверял в IE7).

Подскажите, пожалуйста, возможные пути решения.

pS: Во флешке всего один кадр, поэтому SetVariable не подходит)
ppS: ActionScript 2

Заранее спасибо откликнувшимся!

ZoNT 09.11.2009 11:22

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

doochik 09.11.2009 12:08

Попробуйте сделать так:
if (ExternalInterface.available) {
   init();                       
} else {                          
   var timer:Timer = new Timer(100);
   timer.addEventListener(TimerEvent.TIMER, timerHandler);
   timer.start();                                         
}                                                          

private function timerHandler(event:TimerEvent):void {
   if (ExternalInterface.available) {
      stopTimer(Timer(event.target));
      init();
   }
   if (_tryCounter-- < 0) {
      trace('Stop work. Timer runs 50 times and External interface is not available.');
      stopTimer(Timer(event.target));
   }
}


а в init уже вешать callback

ZoNT 09.11.2009 18:32

Вспомнил такой момент: если у тега <object> не указан id в ИЕ ExternalInterface работать не будет.

Snipe 16.03.2010 17:50

Если не решили еще проблему, попробуйте загрузить флешку с помощью http://code.google.com/p/swfobject/
После этого нормально вроде все подцепляется.

Если решили каким-то другим путем - дайте плиз знать.


Часовой пояс GMT +3, время: 10:47.