Ho un video di youtube incorporato che desidero applicare all'API di YouTube. Aggiungo il parametro URL utilizzando jQuery come segue (demo):Abilita l'API di YouTube sul lettore esistente
$(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();
})
});
Questo metodo funziona alla grande in Firefox, ma non a tutti in IE o Chrome (non sono sicuro di altri browser). Quindi la mia domanda è: come posso modificarlo per far funzionare l'API in altri browser? Dovrei rimuovere completamente l'oggetto e sostituirlo usando SWFObject?
Nota: il codice di incorporamento è direttamente da YouTube.
Update: ho capito se rimuovere l'oggetto, aggiungere i parametri URL quindi aggiungere l'oggetto indietro, ora posso farlo funzionare in Chrome, ma ancora non IE (updated demo).
Addendum: Perché l'API di YouTube non funziona quando l'oggetto/embed ha già il codice di abilitazione al suo interno? Sto cercando di evitare di rendere SWFObject una dipendenza.
<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>
Il il problema sembra essere che Chrome e IE non aggiornano il DOM/embed api per l'elemento quando si cambia l'attributo src. Il codice funziona se aggiungi le querystrings direttamente nel codice. Il tuo sito richiede che sia aggiunto dinamicamente? – aolde
@Manticore: Non è un requisito, sto provando a modificare un plugin. Il codice/link video viene aggiunto dall'utente in un elenco, quindi stavo cercando di determinare il modo più semplice per farlo funzionare senza impostare alcuna regola come nessun tag embed. – Mottie
Ho avuto lo stesso problema e IE ha iniziato a comportarsi in modo appropriato per me dopo aver aggiunto l'attributo classid = "clsid: D27CDB6E-AE6D-11cf-96B8-444553540000" aggiunto da SWFObject. – kamens