1

我正在尝试使用 ExternalInterface 从动作脚本中调用 javascript 的方法。这是动作脚本中的代码

private function onKickEvent(e:LogoutEvent):void{
                ExternalInterface.call("LoginFound","message");
                return;
        }

这是我的 javascript mwthod

function LoginFound(message){
        alert(message);
    anotherInstanceExists=true;

}

一切工作正常,但唯一的事情是在大约 20 秒后对 javascript 中显示的警报框采取行动时,Flash 播放器会抛出异常,即脚本运行时间超过预期时间 15 秒。

我怎样才能避免这种情况?

4

3 回答 3

3

解决此问题的最佳方法是在警报行的 javascript 中添加 setTimeout。它应该如下所示:

setTimeout(function(){ alert(message) }, 1);

通过这样做,执行不会因为警报而停止。

于 2012-07-17T11:21:47.260 回答
2

当您从 调用js函数时actionscript,该函数必须工作并且返回值不超过 in 15 secJavascript单线程中工作,当您调用LoginFound函数时,会alert停止线程上的进一步执行。

function LoginFound(message){
    alert('something');
    //Nothing will be executed unless `alert` window will be closed        
}

Actionsript但是,您可以使用以下方法处理这种情况(执行时间超过 15 秒)try/catch

private function onKickEvent(e:LogoutEvent):void{
    try{
        ExternalInterface.call("LoginFound","message");
    }catch(e:Error){
        //Do something
    }
}
于 2012-07-17T10:17:06.943 回答
0

我想你onKickEvent经常被叫

以便定期调用javascript。最后是浏览器超时事件

发生。它总是发生在递归函数中。

于 2012-07-17T10:17:19.300 回答