2009-10-14 8 views
1

Je charge tout sur ma page. A la fin, j'ai ce script.Pourquoi ce javascript fonctionne-t-il ... mais ce n'est pas le cas?

<script type="text/javascript">loadNewVideo('u1zgFlCw8Aw',0)</script> 

Cela ne fonctionne pas. Mais si je remplace avec cela, il fonctionne .:

<input type="submit" onclick="loadNewVideo('u1zgFlCw8Aw',0);" > 

Dans le fichier .js c'est la fonction:

function loadNewVideo(id, startSeconds) { 
      alert('In-the-function'); 
      if (ytplayer) { 
      alert('Found-ytplayer'); 
      ytplayer.loadVideoById(id, parseInt(startSeconds)); 
      } 
     } 

Apparemment, « YTPlayer » est faux dans le premier! ??

+2

Vous devriez montrer le code complet. D'où vient ytplayer? –

+3

Où est défini ytplayer et qu'est-ce que c'est? –

+0

Si vous pouvez nous donner un lien alors nous pourrions regarder dans Firebug, ou vous pourriez ... – Skilldrick

Répondre

4

Je n'ai pas de réponse, mais peut-être cela vous aidera à savoir quand le YTPlayer composant est prêt à l'emploi:

var startTimer = new Date().getTime(); 
function ytplayerReadyCheck() { 
    var ready = !!ytplayer; 
    if (!ready) { 
    window.setTimeout(ytplayerReadyCheck,50); 
    } 
    else { 
    var endTimer = new Date().getTime(); 
    alert('ytplayer is now ready!\n\nWe waited '+(endTimer-startTimer)+' milliseconds for it'); 
    loadNewVideo('u1zgFlCw8Aw', 0); 
    } 
} 
ytplayerReadyCheck(); 

Bien sûr, cela est très peu pour remplacer déterminer où ytplayer est défini en premier lieu! Peut-être est-il défini dans un fichier .js chargé dynamiquement après le document a été chargé?

Je vous recommande vivement de vous procurer Firebug afin que vous puissiez plus facilement déboguer ce genre de chose.

+0

Correct. Cela prend un certain temps avant le chargement de ytplayer. Par conséquent, j'ai mis un setTimeout avant d'appeler cette fonction loadNewVideo! et alors ça marche. – TIMEX

9

Je ne sais pas ce qu'est ytplayer, mais j'imagine que ce problème a quelque chose à voir avec le DOM n'étant pas complètement chargé. Avez-vous essayé cela?

<script type="text/javascript"> 
$(document).ready(function() { 
    loadNewVideo('u1zgFlCw8Aw', 0); 
}); 
</script> 

modifier: Si cela ne fonctionne pas, vous devrez nous donner plus d'informations. Comme Tim et Peter vous ont demandé de répondre à votre question, pouvez-vous nous dire où est défini ytplayer et qu'est-ce que c'est? Je suppose qu'il est synonyme de YouTube Player, peut-être qu'il est chargé/défini après vous appelez loadNewVideo? Par exemple, si l'extrait de code ci-dessus est au-dessus de la partie où ytplayer est défini dans votre document, il sera toujours appelé avant que le ytplayer soit chargé, en fonction de la manière dont vous le chargez. Comme je l'ai dit, veuillez fournir plus d'informations.

+0

En effet, vous avez raison; javascript s'exécute dès qu'il est lu, donc vous devez vous assurer que tout ce que vous voulez est déclaré sur le script que vous exécutez, ou (mieux encore) tout faire dans l'événement 'load' (comme vous le démontrez) :) –

+1

@silky : note, prêt! = charger –

+0

Cela ne fonctionne pas. J'ai essayé document.ready dans Jquery. – TIMEX

4

Je dirais que c'est parce que le DOM n'a pas complètement chargé à ce stade. Vous voulez accrocher l'événement onLoad du corps, ou utiliser jQuery pour obtenir le hook $ (document) .ready().

Questions connexes