2010-12-08 8 views
3

次のコードを使用してブラウザウィンドウの終了を判断しています。しかし、ユーザーが "F5"を使用してページをリフレッシュしたり、ブラウザのリフレッシュボタンをクリックしたときに問題が発生し、その場合でも同じコードが呼び出されます。私はブラウザクローズイベントを区別し、上記のユーティリティへのActionScriptフレックス/アクションスクリプトでF5とブラウザの閉じるイベントを区別する

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によって行われます使用してイベントをリフレッシュすることが可能な、とにかくそこにあるかどうかを知りたい

ハンドルロックアウト、 "unloadFlex");

+0

私はかなり確信している、HTMLのonunloadイベントが発生します。ページをリフレッシュすることは、本質的にはそれを残して、同じ場所に戻ってくることです。私はあなたができることは何もないと思う。どうしてあなたは退去する一つの方法を気にしますか? – JeffryHouser

+0

ブラウザを閉じるときにログアウトハンドラを呼び出すが、ユーザが画面を更新するときに同じことをしたくない。 – Arun

答えて

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); 
} 
} 
+0

問題の創造的な解決策にプラスを加えたが、AS3またはJavaScriptでlastKeyPressedをどうやって得るのだろうか?どのようにこれは、リフレッシュボタンをクリックすると対処するだろうか?ユーザーがF5キーを押してからブラウザウィンドウを閉じるとどうなりますか? – JeffryHouser

+0

実際、私はそれを見ているので、これは非常に間違った答えです。リスナを追加する場所ではなく、ハンドラにlastKeyPressedチェックを配置します。 –

0

書き込み。

(最後の数秒+ x)以内に存在する場合は、閉じるのではなく更新していました。ユーザーがページを離れるたび

あなたには、いくつかのコード例

が必要な場合は、私に教えてください:)

+0

私はこれを持っているかどうか不明です。しかし、問題は、BlazeDSで提供されているChannelSetログインAPIを使用して解決されました。このためには、実際に認証を実行するservices-config.xmlのセキュリティタグの下に独自のloginCommandクラスを定義する必要があります。フレックスエンドでは、channelset.login()はLoginCommand実装で定義されたdoAuthentication APIを呼び出します。すべてのブラウザを閉じると、サーバ上で認証がリセットされます。 – Arun

関連する問題