4

次のコードを使用してブラウザウィンドウの閉鎖を判断していますが、完全に機能します。ただし、ユーザーが「F5」を使用してページを更新するか、ブラウザの更新ボタンをクリックすると、問題が発生します。その場合でも、同じコードが呼び出されます。

とにかく、actionscriptを使用してブラウザのクローズイベントと更新イベントを区別できるかどうかを知りたいです

package utils
{
import flash.external.ExternalInterface;

public class ExternalInterfaceUtil
{
    public static function addExternalEventListener( qualifiedEventName:String, callback:Function,callBackAlias:String ):void
    {
        // 1. Expose the callback function via the callBackAlias
        ExternalInterface.addCallback( callBackAlias, callback );
        // 2. Build javascript to execute
        var     jsExecuteCallBack:String = "document.getElementsByName('"+ExternalInterface.objectID+"')[0]."+callBackAlias+"()";
        var jsBindEvent:String = "function(){"+qualifiedEventName+"= function(){"+jsExecuteCallBack+"};}";
        // 3. Execute the composed javascript to perform the binding of the external event to the specified callBack function
        ExternalInterface.call( jsBindEvent );
    }
}
}

上記のユーティリティの呼び出しは、

ExternalInterfaceUtil.addExternalEventListener( "window.onunload"、handleLogout、 "unloadFlex");

4

2 に答える 2

1

擬似コード:

public static function addExternalEventListener( qualifiedEventName:String, callback:Function,callBackAlias:String ):void
{
   if(lastKeyPressed.KeyCode != 116)
   {
    // 1. Expose the callback function via the callBackAlias
    ExternalInterface.addCallback( callBackAlias, callback );
    // 2. Build javascript to execute
    var     jsExecuteCallBack:String = "document.getElementsByName('"+ExternalInterface.objectID+"')[0]."+callBackAlias+"()";
    var jsBindEvent:String = "function(){"+qualifiedEventName+"= function(){"+jsExecuteCallBack+"};}";
    // 3. Execute the composed javascript to perform the binding of the external event to the specified callBack function
    ExternalInterface.call( jsBindEvent );
 }
}
于 2010-12-08T15:31:11.833 に答える
0

現在の現地時間で数秒ごとに共有オブジェクトに書き込みます。

それが (最後の数秒 + x) 以内に存在する場合、それは終了ではなく更新でした。

コード例が必要な場合はお知らせください

:)

于 2011-07-11T01:25:15.870 に答える