0

我知道在让 JavaScript / Flex ExternalInterface 运行良好方面还有其他问题,但我认为这是一个奇怪的问题。它在除Safari(在 Mac 上)之外的所有浏览器中都能完美运行。Chrome、IE、Firefox - 一切正常,但 Safari,不,它只是不会触发。我在下面复制了我的代码,任何人都可以看到为什么它在 Safari 中不起作用吗?

(“你确定”对话框窗口出现在 Safari 中,但 Flex 应用程序中的方法没有被调用)

干杯亚历克斯

弹性代码:

        if(ExternalInterface.available){
          ExternalInterface.addCallback("flexShutdownHandler",flexShutdownHandler);
          fnMyLogger("External interface available - setting shutdownhook");
        }else{
          fnMyLogger("External interface *NOT* available");
        }

        private function flexShutdownHandler():void{
            fnMyLogger("*****************");
            fnMyLogger("** Logging out **");
            fnMyLogger("*****************");
            // other code as well here where I 
            //   can tell doesn't get called ....


        }

JavaScript 代码:

    <script language="JavaScript" type="text/javascript">
        function thisFlexApp(flexName) {
            if (navigator.appName.indexOf("Microsoft") != -1 || navigator.appName.indexOf("MSIE") != -1) {
                return window[flexName];
            } else {
                return document.getElementById(flexName);
            }
        }

        function shutdownHook(){
            window.alert ("are you sure ?");
            thisFlexApp("MyFlexApp").flexShutdownHandler();
        }
        //Set up notification for flex app when page unloads
        window.onbeforeunload = shutdownHook;

    </script>
4

1 回答 1

0

通常,当 ExternalInterface 发生错误时,问题不是您显示的代码,而是 SWF 的嵌入代码。

作为第一步,我建议您在 HTML 页面中嵌入带有 SWFObject 的 SWF,这通常可以解决 Safari Mac 问题。

于 2010-08-08T04:53:54.827 回答