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?
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
Fera, déjà dessus. ------- –
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. –