javascript la méthode addEventListener onStateChange ne fonctionne pas sous IE
J'ai deux colorbox popup cases qui permettent de montrer une vidéo de youtube dans chaque. Quand ils ont fini de jouer, je vais essayer de les avoir automatiquement la fermeture de la colorbox fenêtre. Ce code ci-dessous fonctionne parfaitement sous firefox, mais sous IE, je ne peux pas obtenir la méthode addEventListener de travail. J'ai essayé attachEvent, sans succès. Quelqu'un peut-il offrir des suggestions quant à la façon de résoudre ce problème? Cela semble simple, mais je suis épuisé à essayer de trouver une solution. Par ailleurs, c'est ma première fois sur stackoverflow et c'est très impressionnant.
Mise à JOUR 1:
Bien, c'est mon code actuel. Il fonctionne parfaitement dans FF, mais IE n'affiche bien. IE8 débogueur n'est pas signaler toute erreur soit...
function onYouTubePlayerReady(playerId) {
if (playerId && playerId != 'undefined') {
if(playerId && playerId == 'ytvideo1'){
var ytswf = document.getElementById('ytplayer1');
alert('good');
} else if(playerId && playerId == 'ytvideo2'){
var ytswf = document.getElementById('ytplayer2');
} else {
}
setInterval('', 1000);
ytswf.addEventListener('onStateChange', 'onytplayerStateChange');
alert('great');
}
}
function onytplayerStateChange(newState) {
alert('amazing');
if(newState == 0){
$.fn.colorbox.close();
alert('perfect');
}
}
Mise À Jour 3: Solution
Simplement mettre onComplete dans mon colorbox et de mettre le swfobject et il a parfaitement fonctionné dans IE.
Je voulais dire attachEvent.
Je l'ai fait simplement ytplayer.attachEvent("onStateChange", onytplayerStateChange); à droite ci-dessous la méthode addEventListener, je n'ai pas mis dans un état, pensé qu'il ne serait pas question.
J'ai mis à jour mon code avec un attachEvent dans le ytvideo2, cela fonctionne dans les FF, mais pas IE. Je dois obtenir que cela fonctionne sous IE. Je suis en essais dans FF, IE8, et IE mode de compatibilité (IE6?), fonctionne ni sur IE. Une solution de contournement serait bien, des suggestions?
Permettez-moi de m'assurer que je comprends ce que vous dites. Exécuter le code, vous montrer ci-dessus, vous ne voyez PAS un "grand" alerte sous IE, et vous n'obtenez pas les rapports d'erreur? Quand vous dites c'est à dire, tu veux dire pas de version d'IE que ce soit? Pouvez-vous fournir un lien vers une page de test afin que je puisse prendre un coup d'oeil? Il me semble que si la page d'exemple j'ai dans ma réponse fonctionne sous IE, que vous connaissez le code Google est très bien. Vous devriez maintenant être à essayer de comprendre quelle est la différence entre votre code et Google.
OriginalL'auteur |
Vous devez vous connecter pour publier un commentaire.
de tester sous IE, il ressemble à la référence que vous utilisez
est attribué avant le véritable objet swf est chargé, de sorte que IE pense que vous faites référence à un simple élément div
vous avez besoin pour exécuter ce code
droite après l'appel de
avant de la fermer que
$(function()
et place
var ytswf;
juste après la
<script>
au lieu de plus bas
ah, maintenant vous pouvez voir comment j'ai ressenti au cours des 2 dernières semaines... merci pour la recherche en elle, je suis sûr que je peux trouver une alternative à la colorbox, qui prendra juste quelques sérieuses modifications. Je vais indiquer votre réponse comme correcte simplement parce que maintenant je sais que attachEvent n'est pas le problème. merci encore!
Merci pour les points, Derek, même si je sens que je n'ai pas beaucoup. J'ai eu une pensée bien, ce que si vous chargez swfObject APRÈS vous rendre à la colorbox fenêtre, comme un rappel à colorbox. Je ne sais pas quels sont les autres problèmes, il pourrait créer, mais avant d'aller de commutation caissons lumineux, il est peut-être quelque chose vaut la peine d'essayer.
OriginalL'auteur
IE ne prend pas en charge
addEventListener
t-il?? Vous avez besoinattachEvent
droit?OriginalL'auteur
Nouvelle réponse
Le lecteur YouTube objet implémente sa propre méthode d'addEventListener qui est plus proche de la façon dont AS3 de la syntaxe. Selon les informations énumérées ici:
YouTube fournit un exemple sur la page dont je vais vous donner ici:
YouTube fournit également un exemple de page qui semble prouver que leur exemple de code fonctionne sous IE. Je vais le lien page d'exemple ici.
Maintenant, voici une tentative de ré-écriture des sections pertinentes de votre code pour le travail comme pour les exemples fournis par Google/YouTube:
Ainsi, il s'avère que l'erreur ici découle de la confusion créée par l'utilisation de la méthode nom de "méthode addEventListener'. Dans le W3C JavaScript mise en œuvre, le second paramètre est une fonction alors que dans le YouTube de la mise en œuvre, le second paramètre est une chaîne de caractères. Donner un coup de cette =).
De nouveau, des travaux dans les FF, pas IE. Peut-être un exemple serait de vous aider les gars de résoudre mon problème.
Derek, veuillez ouvrir la page d'exemple, que j'ai relié à ma réponse, et dites-moi si vous voyez onStateChange événements dans votre version d'IE. J'ai testé avec IE8, et il semble très bien fonctionner pour moi. Aussi, veuillez noter que le troisième paramètre n'est pas nécessaire dans la méthode addEventListener. Essayez et remplacer votre onYouTubePlayerReady avec celui que j'ai fourni, et de faire rapport. Vous ne devriez pas besoin de les instructions de branchement.
J'ai essayé de le youtube page d'exemple dans IE8 et le joueur de l'etat fonctionne. Pour une raison quelconque, ils ne me permet pas d'utiliser le mode de compatibilité sur cette page. J'ai l'habitude de tester les deux IE6 et IE8, je vais essayer de comprendre ce code, cet après-midi. La mise à jour du code ci-dessus ne me donne pas un bon résultat mais je vais jouer avec elle beaucoup. Merci pour votre aide, je vais revenir à vous dès que possible.
Pouvez-vous s'il vous plaît regardez mon code dans la mise à Jour 1 ci-dessus. C'est ma tentative de prendre le détroit de youtube code.
OriginalL'auteur Josh the Goods