2010-10-30 99 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儘快返回回調越好。