Различать F5 и событие закрытия браузера в flex/actionscript
Я использую следующий фрагмент кода, чтобы определить закрытие окна браузера, и он отлично работает. Но проблема возникает, когда пользователь обновляет страницу, используя "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 ответа
Псевдокод:
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 );
}
}
Пишите в общий объект каждые несколько секунд с текущим местным временем.
Если это существует в течение (последних нескольких секунд + x), это было обновление, а не закрытие.
Дайте мне знать, если вам нужны примеры кода
:)