Различать F5 и событие закрытия браузера в flex / actionscript - PullRequest
3 голосов
/ 08 декабря 2010

Я использую следующий фрагмент кода, чтобы определить закрытие окна браузера, и оно отлично работает. Но проблема возникает, когда пользователь обновляет страницу, используя «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");

Ответы [ 2 ]

1 голос
/ 08 декабря 2010

Псевдокод:

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 голосов
/ 11 июля 2011

Запись в общий объект каждые несколько секунд с текущим местным временем.

Если это существует в течение (последних нескольких секунд + x), это было обновление, а не закрытие.

Дайте мне знать, если вам нужны примеры кода

:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...