2010-08-07 7 views
0

Je sais qu'il y a eu d'autres questions sur le fait de faire en sorte que JavaScript/Flex ExternalInterface fonctionne bien, mais j'ai ce que je pense être un peu bizarre. Il fonctionne parfaitement dans tous les navigateurs sauf Safari (sur un Mac). Chrome, IE, Firefox - tout va bien, mais Safari, non, ça ne se déclenchera pas. J'ai copié mon code ci-dessous, quelqu'un peut-il voir pourquoi cela ne fonctionne pas dans Safari pls?Flex ExternalInterface ne se déclenche pas dans Safari (fonctionne partout ailleurs!)

(le 'êtes-vous sûr' fenêtre de dialogue apparaît dans Safari mais la méthode dans l'application Flex ne comprend tout simplement pas appelé)

Vive Alex

Code 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 .... 


     } 

Code 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> 

Répondre

0

généralement, en cas d'erreur i n ExternalInterface le problème n'est pas le code que vous avez montré mais le code d'intégration du fichier SWF. Dans un premier temps, je vous recommande d'intégrer les fichiers SWF avec SWFObject dans la page HTML, cela résoudra généralement le problème du Mac Safari.