2010-10-30 96 views
0

我有一个Flash电影,我使用ExternalInterface.call函数从电影内调用JavaScript函数。问题是,无论何时在Mozilla Firefox中执行javascript函数,浏览器都变得无法响应。我已经在这里上传了这个文件:http://www.aakashb.0fees.net/carbon6.html这是一个印度的地图,当你点击最上面的状态(这是查谟和克什米尔的状态)时,它会调用一个javascript函数。在新窗口中打开它可能会使浏览器无法响应。如何防止在调用ExternalInterface.call时浏览器无法响应?

回答

0

那里是你的方法有两个错误:

  1. 你可以从ExternalInterface.call直接调用javascript函数。

    所以没有必要在JavaScript代码中调用eval。 ExternalInterface.call('alert',“来自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' 

所以,如果你EVAL“警报”,代码的执行将被锁定,您的浏览器可能无响应。
这将很容易避免。改变你的JavaScript函数“评估”如下

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

的setTimeout只会推迟“警报”的执行,并从ActionScript尽快返回回调越好。