2009-12-29 5 views
0

Je suis en train de configurer une commande de lecteur MP3 Flash (la version autonome de WordPress Standalone Player). J'ai une situation de plusieurs fenêtres avec des joueurs ouverts. Une fenêtre ouvre l'autre, j'ai donc la propriété window.opener disponible.Essayer d'accéder au film Flash à partir de JS fonctionne dans FF, mais pas dans IE

Lorsque la fenêtre enfant est ouverte, je veux couper le lecteur audio dans la fenêtre parente.

Cela fonctionne dans Firefox, mais pas dans IE 7 et 8. Je connais peu d'interaction Flash/Javascript et je suis bloqué. Je ne reçois aucun message d'erreur. Pour ce faire, l'objet SWF du lecteur possède une fonction setVolume() et close(). Ces fonctions ne sont définies nulle part dans Javascript, donc je suppose que celles-ci sont fournies par l'objet Flash. Ceci est soutenu par les lignes qui suivent, je trouve dans le Flash source code du joueur:

if (ExternalInterface.available) { 
ExternalInterface.addCallback("load", Application, Application.ei_loadFile); 
ExternalInterface.addCallback("close", Application, Application.ei_closePlayer); 
ExternalInterface.addCallback("open", Application, Application.ei_openPlayer); 
ExternalInterface.addCallback("setVolume", Application, Application.ei_setVolume);  

Dans Firefox, cela fonctionne:

if (typeof(AudioPlayer) != "undefined") 
var player = AudioPlayer.getPlayer("audioplayer_1"); // This shows up as 
                 // the player SWF object 
                 // in Firebug 

if (player) 
if (typeof(player.setVolume) == "function") 
    player.close(); // This works in FF but not in IE 

mais dans IE, il ne fonctionne pas. Est-ce parce que le rappel n'est pas disponible dans IE? Ou y at-il quelque chose que je dois faire en plus?

+1

Est-ce que le joueur obtient une valeur dans IE? Pourquoi testez-vous setVolume puis appelez-vous à proximité? Collez quelques alertes dans votre code et faites un rapport. – spender

+0

Fera, déjà dessus. ------- –

+0

Très bien, c'était en fait, et bizarrement, mon test de fonctionnement. (La différence entre setVolume et close était un accident et n'avait rien à voir avec ça.) J'ai testé la disponibilité de ma fonction 'mutePlayer()' comme ceci: 'if (typeof window.opener.mutePlayer ==" function ") 'cela ne fonctionne pas dans IE, je ne sais pas pourquoi. Probablement parce que les fonctions sont organisées quelque part sous l'objet 'window'. Si je supprime cette vérification, je peux appeler la fonction et tout fonctionne bien. Merci pour votre temps. –

Répondre

2

Si cela fonctionne dans FF mais pas IE, le problème est probablement dans le code JavaScript. ExternalInterface est assez fiable (99% des échecs que je rencontre sont le résultat de problèmes JavaScript, pas de problèmes ActionScript). Window.opener est-il supporté dans IE? Avez-vous testé votre JavaScript dans une page sans les trucs Flash pour vous assurer que le code fonctionne?

edit: Comment puis-je poster comme commentaire et pas de réponse?

Modifier edit: nvm, je ne suis pas encore assez cool pour commenter.

+0

Cheers, vérifiez mon commentaire ci-dessus sur ce que c'était. –

Questions connexes