2010-10-27 10 views
0

J'ai une vidéo YouTube intégrée dans ma page. Il est caché (affichage: aucun). Vous devez cliquer sur l'un des boutons du lien vidéo pour afficher la vidéo et la lire. Les liens sont définis comme suit:YouTube vidéo intégrée activation trop tard pour accepter l'appel javascript

xxxxxxxxx représentent les ID vidéo YouTube.

est ici la fonction de jeu:

function play(id) 
{ 
    ytplayer.style.display = 'block'; 
    ytplayer.loadVideoById(id, 0, 'hd1080'); 
} 

Il est fondamentalement assez simple! Mais voici le problème. puisque le lecteur vidéo est caché, l'objet flash n'est pas activé. Donc, quand je clique sur un lien vidéo, la ligne ytplayer.style.display = 'block'; affiche le lecteur vidéo, mais il faut environ une demi-seconde pour que le flash se charge. Pendant ce temps, il ne peut pas accepter d'appels de méthode, tels que la ligne suivante ytplayer.loadVideoById(id, 0, 'hd1080');. Essentiellement, je dois cliquer sur le lien deux fois, une fois pour charger le lecteur vidéo flash, la deuxième fois pour charger la vidéo dans le lecteur.

Répondre

0

Il ressemble à une fois que vous activez la vidéo, vous devez configurer et d'attendre un rappel:

onYouTubePlayerReady(playerid) 

(Tiré de cette page: http://code.google.com/apis/youtube/js_api_reference.html)

Dans cette fonction vous pourriez faire une appels qui nécessitent le joueur à charger:

ytplayer.loadVideoById(id, 0, 'hd1080'); 

Si vous n'utilisez pas le lecteur chromeless, vous devrez peut-être écouter au lieu de la OnStateChange et onError ev ents.

+0

J'ai essayé cela, il semble seulement distribuer cet événement quand le joueur est chargé pour la première fois dans la page. Avant qu'il ne soit caché. Après qu'il est à nouveau affiché, cet événement ne se déclenche pas. – HyderA

+0

@gAMBOOKa, vous dites "cet événement", que voulez-vous dire? –

+0

Le même qui déclenche 'onYouTubePlayerReady'. Je veux dire que 'onYouTubePlayerReady' est seulement appelé pendant le chargement initial. – HyderA