2010-06-04 13 views
2

J'essaie de travailler avec l'API java de youtube et j'ai un problème pour l'initialiser/obtenir un rappel quand il est prêt. La documentation Api peut être trouvée here.youtube javascript api ne déclenche pas de rappel

Je reçois les vidéos de la JSON fournies par youtube et en les intégrant comme ceci:

//insert flash object in video element 
     $(video_elm_arr[i]).append('<object id="video_' + i + '" width="' + width + '" height="' + height + '">' + 
            '<param name="movie" value="' + video_url + '?showinfo=0&enablejsapi=1"></param>' + 
            '<param name="allowFullScreen" value="true"></param>' + 
            '<param name="allowscriptaccess" value="always"></param>' + 
            '<embed src="' + video_url + '?showinfo=0&enablejsapi=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="' + width + '" height="' + height + '"></embed>' + 
            '</object>'); 

Notez que j'ajoute « enablejsapi = 1 » à l'URL qui devrait permettre à l'api javascript. Toutefois, lorsque j'écoute le rappel que l'API est prêt, c'est-à-dire:

//set player functionality when javascript api is available 
    function onYouTubePlayerReady(playerId) { 
    alert('api is ready!'); 
    } 

il n'est jamais déclenché. Tout le reste sur la page (y compris les vidéos YouTube) se charge correctement, et même l'autre paramètre que je passe dans l'url des vidéos (showinfo = 0) fonctionne correctement. Ce qui donne? Quelqu'un voit mon erreur? Toute l'aide est grandement appréciée ...

+0

Je sais que youtube recommande « SWFObject », mais ce n'est pas une option dans mon cas ... – danwoods

+0

que j'ai trouvé un moyen de contourner ce problème (juste en utilisant les vignettes est raisonnable pour ce que j'ai besoin), mais je J'aimerais toujours savoir la réponse :) – danwoods

Répondre

1

La page est-elle servie à partir d'un serveur (et non d'une machine locale)? Youtube (ou Flash en général) n'est pas autorisé à interagir avec JavaScript si la page est diffusée localement.

0

Essayez d'ajouter &playerapiid=THEPLAYERIDYOUWANTPASSEDIN à l'URL. Ceci est envoyé au rappel en tant que paramètre "playerId".

//insert flash object in video element 
     $(video_elm_arr[i]).append('<object id="video_' + i + '" width="' + width + '" height="' + height + '">' + 
            '<param name="movie" value="' + video_url + '?showinfo=0&enablejsapi=1&playerapiid=' + i + '"></param>' + 
            '<param name="allowFullScreen" value="true"></param>' + 
            '<param name="allowscriptaccess" value="always"></param>' + 
            '<embed src="' + video_url + '?showinfo=0&enablejsapi=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="' + width + '" height="' + height + '"></embed>' + 
            '</object>');