в вашем подходе есть две ошибки:
Вы можете вызвать функцию javascript напрямую из ExternalInterface.call.
так что нет необходимости вызывать eval в вашем коде JavaScript.
ExternalInterface.call ('alert', "alert from swf!");
предупреждение заблокирует выполнение кодов 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 как можно скорее.