【发布时间】:2010-11-10 07:28:53
【问题描述】:
我必须在我的 Flash 中检测用户是否关闭了他的浏览器或转到另一个页面并且 Flash 不再可访问。我如何做到这一点?
【问题讨论】:
标签: actionscript-3 browser flash
我必须在我的 Flash 中检测用户是否关闭了他的浏览器或转到另一个页面并且 Flash 不再可访问。我如何做到这一点?
【问题讨论】:
标签: actionscript-3 browser flash
ExternalInterfaceUtil.addExternalEventListener("window.onunload", handleLogout, "unloadFlex");
package
{
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 );
}
}
}
我不记得我是从哪里得到这个的,但我用过它并且效果很好。当然不是所有的浏览器都会合作,但总比没有好...
【讨论】:
您可以结合使用 Javascript 和 Flash 来实现您正在寻找的内容。
使用 Javascript 来检测用户何时离开页面。使用 javascript 事件通过 ExternalInterface 调用您的 Flash 电影。调用代码后,您可以根据需要处理事件。
【讨论】:
上面的方法对我很有效,但有一个例外:如果我返回 null 作为我的字符串,我不想弹出任何消息。它适用于除 IE 之外的所有浏览器,它会弹出一个显示“null”的对话框。
这可以通过改变一行来添加一个空检查来纠正:
var jsBindEvent:String = "function(){"+qualifiedEventName+"= function(){if (" + jsExecuteCallBack + ") return "+jsExecuteCallBack+"};}";
【讨论】: