我有一個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儘快返回回調越好。