J'ai une vidéo YouTube incorporée dans laquelle je souhaite appliquer l'API YouTube. Ajouter le paramètre URL en utilisant jQuery comme suit (demo):Activer l'API YouTube sur un lecteur existant
$(document).ready(function(){
var obj = $('object');
obj.find('embed').attr('src', function(i,s){return s+'&enablejsapi=1&version=3'})
obj.find('param[name=movie]').attr('value', function(i,v){return v+'&enablejsapi=1&version=3'})
$('.play').click(function(){
obj.find('embed')[0].playVideo();
});
$('.pause').click(function(){
obj.find('embed')[0].pauseVideo();
})
});
Cette méthode fonctionne très bien dans Firefox, mais pas du tout dans IE ou Chrome (pas sûr d'autres navigateurs). Donc, ma question est comment puis-je modifier cela pour faire fonctionner l'API dans d'autres navigateurs? Devrais-je supprimer complètement l'objet et le remplacer par SWFObject?
Remarque: Le code d'intégration provient directement de YouTube.
Mise à jour: je me suis dit si je supprime l'objet, ajoutez les paramètres d'URL, puis ajouter l'objet en arrière, je peux maintenant obtenir pour travailler dans Chrome, mais pas encore IE (updated demo). Addenda: Pourquoi l'API YouTube ne fonctionne-t-elle pas lorsque l'objet/l'embed possède déjà le code d'activation? J'essaie d'éviter de rendre SWFObject dépendante.
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="640" height="385">
<param name="movie" value="http://www.youtube.com/v/2Qj8PhxSnhg&hl=en_US&fs=1&enablejsapi=1&version=3"></param>
<param name="allowFullScreen" value="true"></param>
<param name="allowscriptaccess" value="always"></param>
<embed src="http://www.youtube.com/v/2Qj8PhxSnhg&hl=en_US&fs=1&enablejsapi=1&version=3" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed>
</object>
Le problème semble être que Chrome et IE ne met pas à jour le DOM/embed api pour l'élément lorsque vous modifiez son attribut src. Le code fonctionne si vous ajoutez les chaînes de requête directement dans le code. Votre site nécessite-t-il d'être ajouté dynamiquement? – aolde
@Manticore: Ce n'est pas une obligation, j'essaie de modifier un plugin. Le code/lien vidéo est ajouté par l'utilisateur dans une liste, donc j'essayais de déterminer la façon la plus simple de faire ce travail sans définir de règles comme les balises d'intégration. – Mottie
J'ai eu ce même problème, et IE a commencé à se comporter de manière appropriée pour moi après avoir ajouté l'attribut classid = "clsid: D27CDB6E-AE6D-11cf-96B8-444553540000" que SWFObject ajoute. – kamens