如何在调用ExternalInterface.call时阻止浏览器变为无响应?

时间:2010-10-30 13:53:00

标签: firefox actionscript

我有一个flash电影,我正在使用ExternalInterface.call函数从电影中调用javascript函数。问题是每当javascript函数在Mozilla Firefox中执行时,浏览器就会变得无响应。我在这里上传了这个文件:http://www.aakashb.0fees.net/carbon6.html这是一张印度地图,当你点击最顶层的状态(那是查谟和克什米尔的状态)时,你会调用一个javascript函数。在新窗口中打开它...它可能会使您的浏览器无响应。

1 个答案:

答案 0 :(得分:0)

你的方法有两个错误:

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

    因此无需在您的javascript代码中调用eval。

    ExternalInterface.call('alert',“来自swf的警告!”);

  2. 警告将阻止执行javascript代码

  3. 试试这段代码:

    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'
    

    因此,如果您评估'警告',代码的执行将被阻止,您的浏览器可能无响应 这很容易避免。更改您的javascript函数'evaluate'如下

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

    settimeout只会推迟执行'alert'并尽快从actionscript返回回调。