【问题标题】:How to subscribe for an javascript event form Flex 3 action script code?如何订阅 javascript 事件表单 Flex 3 操作脚本代码?
【发布时间】:2009-03-14 18:40:17
【问题描述】:

我们让那个 Flex 应用程序与服务器通信。我们需要某种 FlexEvent.ON_BROWSER_WINDOW_CLOSE 事件,但不幸的是,Flex 没有提供这样的。

所以我得到的建议是捕捉 javascript“onbeforeunload”事件并通过 ExternalInterface-registred 方法调用 flash 客户端。

有没有什么方法可以在没有任何 javascript 代码的情况下订阅 javascript 事件?

更新 我想做的就是增加 Flash 应用托管页面。当然我们可以通过外部 javascript 文件来管理它,但目前还不清楚......

【问题讨论】:

    标签: javascript apache-flex actionscript-3 dom actionscript


    【解决方案1】:

    你可以编译js代码注入到你的SWF文件中:

    package
    {
    
    import flash.display.Sprite;
    import flash.external.ExternalInterface;
    import flash.net.SharedObject;
    
    
    public class CloseTest extends Sprite
    {
        private var so:SharedObject = SharedObject.getLocal("hello");
    
        public function CloseTest()
        {
            if (ExternalInterface.available)
            {
                ExternalInterface.addCallback("onclose", onClose);
                ExternalInterface.call(this.javascript);
            }
    
            this.so.data.count ||= 0;
    
            trace(so.data.count);
        }
    
        private function onClose ():void
        {
            this.so.data.count++;
            this.so.flush();
            this.so.close();
        }
    
        private var javascript:XML = <javascript><![CDATA[function ()
        {
            window.onbeforeunload = function ()
            {
                alert("hello");
                document.getElementById("CloseTest").onclose();
            }
    
        }]]></javascript>;
    }
    
    }
    

    【讨论】:

      【解决方案2】:

      您可以使用 ExternalInterface 调用容器中定义的 Javascript 函数。见this

      This 帖子描述了与您类似的情况。看看吧。

      【讨论】:

      • 这完全是我们正在做的。但是,它需要浏览器 javascript 在托管页面中。
      • 如果没有启用javascript,你还会得到你想要的事件吗?如果是的话,为什么不也写一两行呢?
      【解决方案3】:

      抱歉,如果不使用 Javascript 和 ExternalInterface,就无法完成您正在寻找的工作。

      【讨论】:

        猜你喜欢
        • 2011-02-18
        • 1970-01-01
        • 2018-04-19
        • 1970-01-01
        • 1970-01-01
        • 2023-04-11
        • 2017-11-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多