【问题标题】:Flash player notified on browser close or change page (as3)在浏览器关闭或更改页面时通知 Flash 播放器 (as3)
【发布时间】:2010-11-10 07:28:53
【问题描述】:

我必须在我的 Flash 中检测用户是否关闭了他的浏览器或转到另一个页面并且 Flash 不再可访问。我如何做到这一点?

【问题讨论】:

    标签: actionscript-3 browser flash


    【解决方案1】:

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

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

    【讨论】:

    • 效果非常好。关于如何从 flex 程序中收听“用户在 JS 弹出窗口中单击 OK 按钮”的任何想法?
    【解决方案2】:

    您可以结合使用 Javascript 和 Flash 来实现您正在寻找的内容。

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

    【讨论】:

    • 我可以处理的外部接口..你如何在javascript中检查它?
    • Javascript 有一个 window.onunload 事件,您可以将函数附加到该事件。不幸的是,由于过去的滥用,某些浏览器在用户关闭窗口时不会总是调用 onunload 事件。我知道事实上 Opera 不知道,我不确定其他人。
    【解决方案3】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多