2010-06-06 7 views
8

Estoy tratando de cambiar dinámicamente un video incrustado en una página. Está funcionando en Firefox pero por alguna razón no funciona en IE y Chrome (combinación extraña). Aquí está el HTML:Cambia dinámicamente el video incorporado en IE/Chrome (funciona en Firefox)

<object id="viewer" width="575" height="344"> 
     <param name="wmode" value="transparent" /> 
     <param name="movie" value="http://www.youtube.com/v/Lmn94kn08Lw&hl=en&fs=1&color1=0x006699&color2=0x54abd6&rel=0" /> 
     <param name="allowFullScreen" value="true" /> 
     <embed id="embeddedPlayer" src="http://www.youtube.com/v/Lmn94kn08Lw&hl=en&fs=1&color1=0x006699&color2=0x54abd6&rel=0" type="application/x-shockwave-flash" allowfullscreen="true" width="575" height="344" wmode="transparent"></embed> 
    </object> 

Y aquí está mi código javascript. Un enlace se hace clic para cambiar el video:

 $("#video a").click(
      function() { 
       var videoAddress = $(this).attr("href"); 
       $("#embeddedPlayer").attr("src", videoAddress); 
       return false; // stop the default link so it just reloads in the video player 
      } 
     ); 

Como dije los vídeos están cambiando perfectamente en Firefox pero en IE y Chrome no pasa nada. ¿Algunas ideas?

+0

Esto se ha pedido hace unos días, y la recomendación de IIRC fue utilizar la biblioteca 'SWFPlayer' JS por este motivo. –

Respuesta

10

Finalmente descubrimos algo que funciona en IE, Firefox y Chrome.

Parece un poco inusual hacerlo de esta manera, pero funciona en IE8/Firefox/Chrome, así que me parece bien.

$("#video a").click(
      function() { 
       var videoAddress = $(this).attr("href"); 

       $("#media-active").html(" "); 
       $("#media-active").html('<object id="viewer" width="575" height="344"><param name="wmode" value="transparent" />' + 
     '<param name="movie" value="' + videoAddress + '" /><param name="allowFullScreen" value="true" />' + 
     '<embed id="embeddedPlayer" src="' + videoAddress + '" type="application/x-shockwave-flash" allowfullscreen="true" width="575" height="344" wmode="transparent"></embed></object>'); 

       return false; // stop the default link so it just reloads in the video player 
      } 
); 
+0

Gracias por publicar esto, he intentado por un tiempo averiguar cómo hacerlo, excepto que lo estoy haciendo con un dispositivo de audio. No he visto a nadie diciendo que use el .html() –

+0

perfecto, ¡genial gracias por compartir esto! – felixthehat

+0

@ macca1 Hola. Código muy inteligente. Intento usar tu código en mi, intento crear una videogallery en mi sitio. Desafortunadamente no puedo hacer que funcione. Ese 'media-active' que mencionas, ¿es eso un' div'? ¿O un 'objeto'? Quizás esto me ayude. Gracias – slevin

0

La etiqueta <embed> se utiliza para compatibilidad con versiones anteriores. Intenta cambiar el valor de param en su lugar.

$("#viewer param[name=movie]").attr("value", videoAddress); 
+0

Intenté esto pero no hizo una diferencia desafortunadamente. – macca1

Cuestiones relacionadas