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>