0

JavaScript / Flex ExternalInterface を適切に動作させるために他にも質問があることは知っていますが、私が思うのは奇妙なものです。Safari (Mac)を除くすべてのブラウザで完全に動作します。Chrome、IE、Firefox - すべて問題ありませんが、Safari は起動しません。以下にコードをコピーしましたが、Safari pls で動作しない理由がわかる方はいますか?

(「よろしいですか」ダイアログウィンドウは 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 に答える