我有一个Flash电影,我使用ExternalInterface.call函数从电影内调用JavaScript函数。问题是,无论何时在Mozilla Firefox中执行javascript函数,浏览器都变得无法响应。我已经在这里上传了这个文件:http://www.aakashb.0fees.net/carbon6.html这是一个印度的地图,当你点击最上面的状态(这是查谟和克什米尔的状态)时,它会调用一个javascript函数。在新窗口中打开它可能会使浏览器无法响应。如何防止在调用ExternalInterface.call时浏览器无法响应?
0
A
回答
0
那里是你的方法有两个错误:
你可以从ExternalInterface.call直接调用javascript函数。
所以没有必要在JavaScript代码中调用eval。 ExternalInterface.call('alert',“来自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'
所以,如果你EVAL“警报”,代码的执行将被锁定,您的浏览器可能无响应。
这将很容易避免。改变你的JavaScript函数“评估”如下
function evaluate(code) {
setTimeout(function() {
eval(code);
}, 0);
}
的setTimeout只会推迟“警报”的执行,并从ActionScript尽快返回回调越好。