2010-04-15 3 views
0

J'utilise le code suivant. Cela fonctionne très bien avec getElementByID mais si j'utilise une fonction de détection de système d'exploitation, il cesse de fonctionner.Erreur de communication Flash/Javascript

function getFlashMovie(movieName) 
{ 
    var isIE = navigator.appName.indexOf("Microsoft") != -1; 
    return (isIE) ? window[movieName] : document[movieName]; 
} 

getFlashMovie('myId').sendToActionsript(str); 

Le code ci-dessus ne fonctionne pas alors que la ligne ci-dessous travaille des idées?

document.getElementById('myId').sendToActionscript(str); 

EDIT: Un autre morceau de code pour la même chose, qui ne fonctionne pas non plus.

 function getFlashMovieSecond(movieName) 
     { 
        if (window.document[movieName]) 
        { 
         return window.document[movieName]; 
        } 
        if (navigator.appName.indexOf("Microsoft Internet")==-1) 
        { 
         if (document.embeds && document.embeds[movieName]) 
          return document.embeds[movieName]; 
        } 
        else // if (navigator.appName.indexOf("Microsoft Internet")!=-1) 
        { 
         return document.getElementById(movieName); 
        } 

     } 
+2

Essayez d'utiliser l'exemple qui vient avec l'aide (http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/external /ExternalInterface.html#includeExamplesSummary) - supprimez progressivement les bits dont vous n'avez pas besoin et incorporez le code dans votre projet. Rappelez-vous que certains navigateurs utilisent du contenu Flash, alors que d'autres utilisent le tag d'objet. Assurez-vous donc que vous avez le même nom/identifiant sur les deux balises, et que AllowScriptAccess a la valeur "always" ". HTH –

Répondre

0

Cela semble fonctionner

function thisMovie(movieName) { 

    if (navigator.appName.indexOf("Microsoft") != -1) { 

        return window[movieName]; 

    } else { 

        return document[movieName]; 

    } 

}