浏览器关闭或更改页面时通知Flash播放器(as3)

时间:2009-07-13 13:50:34

标签: actionscript-3 browser flash

我必须在我的闪光灯中检测用户是否关闭了浏览器或转到另一页并且闪光灯不再可访问。我如何实现这一目标?

3 个答案:

答案 0 :(得分:15)

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

我不记得我从哪里得到这个,但我已经用过了它并且效果很好。当然不是所有的浏览器都会合作,但它总比没有好......

答案 1 :(得分:1)

您可以结合使用Javascript和Flash来实现您的目标。

使用Javascript检测用户何时离开页面。使用javascript事件使用ExternalInterface调用Flash影片。调用代码后,您可以根据需要处理事件。

答案 2 :(得分:1)

以上对我有用,但有一个例外:如果我将null作为我的字符串返回,我不希望弹出任何消息。它适用于除IE之外的所有浏览器,它会显示一个“null”的对话框。

可以通过更改一行来添加空检查来纠正:

var jsBindEvent:String = "function(){"+qualifiedEventName+"= function(){if (" + jsExecuteCallBack + ") return "+jsExecuteCallBack+"};}";