Проблема ExternalInterface при загрузке с FireFox - PullRequest
0 голосов
/ 11 июня 2010

У меня проблема с моим ExternalInterface.

Способ, которым он настроен в данный момент, заключается в том, что при загрузке страницы логическое значение устанавливается равным true в JavaScript, а затем проверяется конструкторами ActionScript (с использованием таймера), пока оно не станет истинным. Это означает, что JavaScript готов принимать вызовы от AS3.

На этом этапе AS3 добавит обратный вызов и выполнит некоторые внутренние операции, а в конце конструктора я вызову JavaScript. Все идет нормально. В этот момент JavaScript будет вызывать функцию в AS3 (которая была определена в обратном вызове, описанном выше), и именно здесь все портится.

В IE это прекрасно работает. На FireFox это не так. Когда я отлаживаю его, я вижу, что вызывается функция javascript, но когда она пытается вызвать AS3, ничего не происходит. Я также пытался добавить таймер, но по какой-то причине функция STILL выполняется сразу (в IE).

Что очень странно, что через секунду или две эта функция будет работать, поэтому кажется, что Flash не полностью загружен в FireFox? Но он работает до последней строки моего конструктора, так что я думаю, что он загружен.

РЕДАКТИРОВАТЬ: на самом деле я сделал попытку / поймать, и JavaScript возвращает мне «TypeError: this.version не является функцией». Второй вызов «версии» действительно работает:

Controller.init = function() {
    try {   
        _mainController.getVersion(); // This one does not work
    }
    catch (err) {
        error = err.toString();
    }
}


Controller.addFiles = function(JSON, numberOfFiles) {
    alert(error);

    try {   
        _mainController.getVersion(); // This one works
    }
    catch (err) {
        alert(err.toString()); // This one is never called
    }
}

Во время init, который вызывается из конструктора в AS3, он выдаст ошибку, но позже, если JavaScript вызывает getVersion () из addFiles, он работает (точно такая же функция).

Любая идея, пожалуйста, я действительно застрял.

Большое спасибо, Rudy

1 Ответ

0 голосов
/ 11 июня 2010

У вас может быть больше удачи с Flash Ajax Bridge .Он больше настроен на то, чтобы JS мог управлять файлами AS3, поэтому он может абстрагироваться от процесса установления соединения между различными браузерами.

Имейте в виду, что плагин для связи с браузером является проблемой в лучшие времена.1005 *

...