2012-01-28 7 views
7

Tengo problemas con la compatibilidad de video en Chrome. Mi página web debe ejecutarse en Chrome y estoy usando el siguiente código para verificar periódicamente si la página web tiene que reproducir un video o no ... pero el problema es que después de eliminar el elemento, sigo escuchando el audio y cuando recrear el eleemnt, el audio del nuevo video y las viejas superposiciones.El audio continúa después de eliminar el elemento <video> en Chrome

function showVideo() { 
     var video = videodata; 

     var videobox = $('#videobox').first(); 
     var videoplayer = $('#videoplayer').first(); 

     if (video.Enabled) { 
      if ((videoplayer.length > 0 && videoplayer[0].currentSrc != video.Location) || videoplayer.length == 0) { 
       videobox.empty(); 
       videobox.append('<video id="videoplayer" preload="auto" src="' + video.Location + '" width="100%" height="100%" autoplay="autoplay" loop="loop" />'); 
       videobox.show(); 
      } 
     } else { 
      videobox.hide(); 
      videobox.empty(); // Clear any children. 
     } 
    } 

¿Cómo puedo resolverlo?

Gracias.

Respuesta

0

En mi caso, tuve que pausar el video antes de quitarlo; de lo contrario, el audio se reproducirá en segundo plano. La razón por la que utilicé pausa es porque no hay función stop() en el elemento de video html5.

 } else { 
     videobox.hide(); 

     // you can add something like this 
     $("#videoplayer").pause(); 

     videobox.empty(); // Clear any children. 
    } 
+0

jQuery no puede jugar con

+1

Para acceder al elemento DOM directamente con jQuery debes hacer '$ ('# videoplayer') [0] .pause()'. – Boaz

0

intento (en base a la respuesta de SimpleCode):

función showVideo() {var = vídeo datos de vídeo;

 var videobox = $('#videobox').first(); 
    var videoplayer = $('#videoplayer').first(); 

    if (video.Enabled) { 
     if ((videoplayer.length > 0 && videoplayer[0].currentSrc != video.Location) || videoplayer.length == 0) { 
      videobox.empty(); 
      videobox.append('<video id="videoplayer" preload="auto" src="' + video.Location + '" width="100%" height="100%" loop="loop" />'); 
      videobox.show(); 
      document.getElementById("videoplayer").play(); 
     } 
    } else { 
     document.getElementById("videoplayer").pause(); 
     videobox.hide(); 
     videobox.empty(); // Clear any children. 
    } 
} 
9

Lo siguiente fue lo mínimo que tuve que hacer para que esto funcione. De hecho, estaba experimentando un bloqueo debido al almacenamiento en búfer mientras generaba solicitudes de ajax cuando el usuario presionaba el botón Atrás. La pausa del video en Chrome y el navegador de Android lo mantuvieron en el búfer. La solicitud de ajax no asincrónica se atascaría esperando a que terminara el almacenamiento en búfer, lo que nunca ocurriría.

Al enlazar esto con el evento beforepagehide lo arregló.

$("#SOME_JQM_PAGE").live("pagebeforehide", function(event) 
{ 
      $("video").each(function() 
      { 
       logger.debug("PAUSE VIDEO"); 
       this.pause(); 
       this.src = ""; 
      }); 
}); 

Esto borrará todas las etiquetas de video de la página.

1

firsly intenta crear la etiqueta "video" vacío en el html y crear la etiqueta "fuente" en el código Javascript

<html> 
. 
. 
<video id="main-video" autoplay=""></video> 
. 
. 
</html> 


<script> 
    $('#main-video').append('<source type="video/mp4" src="URL.mp4">'); 
</script> 
Cuestiones relacionadas