1

ExternalInterfaceを使用してactionscriptからjavascriptのメソッドを呼び出そうとしています。これがアクションスクリプトのコードです

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

そしてこれは私のjavascriptmwthodです

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

}

すべてが正常に機能していますが、唯一のことは、JavaScriptに表示されるアラートボックスを約20秒後に操作すると、スクリプトが予想時間15秒より長く実行されているという例外がFlashPlayerからスローされます。

どうすればこれを回避できますか?

4

3 に答える 3

3

この問題を解決する最善の方法は、警告行の JavaScript 内に setTimeout を追加することです。次のようになります。

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

このようにすることで、アラートが原因で実行が停止することはありません。

于 2012-07-17T11:21:47.260 に答える
2

jsから関数を呼び出す場合actionscript、その関数は機能し、。より長くない値を返す15 sec必要があります。シングルスレッドJavascriptで動作し、関数を呼び出すと、スレッドでのそれ以上の実行を停止します。LoginFoundalert

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 に答える