Как не дать браузеру перестать отвечать на запросы при вызове ExternalInterface.call? - PullRequest
0 голосов
/ 30 октября 2010

У меня есть флэш-фильм, и я использую функцию ExternalInterface.call для вызова функции javascript из фильма.Проблема заключается в том, что всякий раз, когда функция javascript запускается в Mozilla Firefox, браузер перестает отвечать на запросы.Я загрузил файл здесь: http://www.aakashb.0fees.net/carbon6.html Это карта Индии и функция javascript, вызываемая при нажатии на самый верхний штат (штат Джамму и Кашмир).Откройте его в новом окне ... это может сделать ваш браузер также не отвечающим.

1 Ответ

0 голосов
/ 03 ноября 2010

в вашем подходе есть две ошибки:

  1. Вы можете вызвать функцию javascript напрямую из ExternalInterface.call.

    так что нет необходимости вызывать eval в вашем коде JavaScript.

    ExternalInterface.call ('alert', "alert from swf!");

  2. предупреждение заблокирует выполнение кодов JavaScript

попробуйте этот код:

alert(1);
console.log(1); // execution of this line is blocked by 'alert'
alert(2);
console.log(2); // execution of this line is blocked by 'alert'

поэтому, если вы наберете «alert», выполнение кода будет заблокировано, и ваш браузер может не отвечать.
этого очень легко избежать. измените функцию javascript «оценивать» следующим образом

function evaluate(code) {
    setTimeout(function () {
        eval(code);
    }, 0);
}

settimeout просто откладывает выполнение 'alert' и возвращает ответный вызов из ActionScript как можно скорее.

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