2011-08-24 9 views
11

que estoy tratando de recrear lo siguiente con Jquery¿Por qué crear un elemento de vídeo de forma dinámica utilizando jQuery no funciona en IE9

<video width="640" height="264" autoplay> 
    <source src="http://video-js.zencoder.com/oceans-clip.mp4" type="video/mp4" /> 
    <source src="http://video-js.zencoder.com/oceans-clip.webm" type="video/webm" /> 
    <source src="http://video-js.zencoder.com/oceans-clip.ogv" type="video/ogg" /> 
</video> 

http://jsfiddle.net/4bkpU/2/

he llegado con el siguiente pero en IE9 el elemento de vídeo está vacío, ¿alguien puede decirme por qué y qué tendría que cambiar para poder agregar videos dinámicamente en IE9? Funciona bien en Firefox, Chrome y Safari.

HTML

<div id="videoHolder"> 
</div> 

jQuery

var video = $('<video width="640" height="264" autoplay></video>') 
      .append('<source src="http://video-js.zencoder.com/oceans-clip.mp4" type="video/mp4" />') 
      .append('<source src="http://video-js.zencoder.com/oceans-clip.webm" type="video/webm" />') 
      .append('<source src="http://video-js.zencoder.com/oceans-clip.ogv" type="video/ogg" />') 
      .appendTo($("#videoHolder")); 

ACTUALIZADO - cerró la etiqueta video arriba y addded nuevo enlace

http://jsfiddle.net/8Cevq/

+0

Probar con '$ ('')' (agregar '' etiqueta de cierre) – arnaud576875

Respuesta

14

intente lo siguiente, esto funciona:

$("#videoHolder").html(
    '<video width="640" height="264" autoplay>' + 
     '<source src="http://video-js.zencoder.com/oceans-clip.mp4" type="video/mp4"></source>' + 
     '<source src="http://video-js.zencoder.com/oceans-clip.webm" type="video/webm"></source>' + 
     '<source src="http://video-js.zencoder.com/oceans-clip.ogv" type="video/ogg"></source>' + 
    '</video>'); 

JSFIDDLE example.

lo que hice para conseguir este trabajo fue:

  • A) utilice el método html para inyectar el margen de beneficio deseado a la vez
  • B) etiquetas alterado (tanto en video y source) a utilizar etiquetas de cierre completo en lugar de taquigrafía />

Un vídeo en lugar fresco, por cierto.

+0

Brillante, muchas gracias. Parece extraño que sea necesario hacerlo de esta manera? – Tom

+0

Sin preocupaciones. Creo que de esta manera es un poco más claro, de todos modos; Usando 'append' en un grupo de cadenas, entonces' appendTo' para el elemento significativo podría parecer demasiado elaborado a primera vista. –

+0

@ Tom - Ver http://stackoverflow.com/questions/7878367/video-tag-not-working-in-ie-9 para la explicación de por qué usted tiene que insertar la etiqueta de vídeo a la vez utilizando $ (elemento). html (videoElement). En resumen, hay un error en IE9 que no permite agregar etiquetas de origen después de agregar una etiqueta de video, deben agregarse al mismo tiempo. – MontyThreeCard

5

IE9 no le gusta cuando se agrega el contenido <video> de elementos dinámicamente, lo que debe agregar el elemento <video> y su contenido a la vez.

Nota: IE9 no parece tener un problema con la abreviatura <source ... />, siempre y cuando no intente agregarla después.

+0

Esto parece muy similar a lo que me está sucediendo en este momento. ¿Hay más detalles sobre lo que no le gusta? – SpaceBeers

Cuestiones relacionadas