2010-09-27 10 views
9

Estoy tratando de adjuntar algunos eventos a un elemento de video HTML5 dentro de la aplicación web de mi iPad, pero parece que no se activan. Probé esto tanto en el dispositivo como en el simulador y obtuve los mismos resultados. Sin embargo, los eventos (para el onclick al menos) funcionan bien en Safari de escritorio. También intenté intercambiar el elemento de video por un div y los eventos dispararon bien. ¿Alguien más se ha encontrado con esto y tiene una idea para trabajar?Elemento de video HTML5 en iPad no se activa al hacer clic o al tocar eventos?

<html> 
     <head> 
       <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
       <title>Test video swipe</title> 
     </head> 
     <body> 

       <video src='somevid.mp4' id='currentlyPlaying' width='984' height='628' style='background-color:#000;' controls='controls'></video> 

       <script> 
         var theVid = document.getElementById("currentlyPlaying"); 

           theVid.addEventListener('touchstart', function(e){ 
             e.preventDefault(); 
             console.log("touchstart"); 
           }, false); 

           theVid.addEventListener('click', function(e){ 
             e.preventDefault(); 
             console.log("click"); 
           }, false); 

           theVid.addEventListener('touchmove', function(e){ 
             console.log("touchmove"); 
           }, false); 

           theVid.addEventListener('touchend', function(e){ 
             console.log("touchend"); 
           }, false); 

           theVid.addEventListener('touchcancel', function(e){ 
             console.log("touchcancel"); 
           }, false); 



       </script> 
     </body> 
</html> 

Respuesta

15

El elemento de video, en el iPad, tragará eventos si usa el atributo de controles. Debe proporcionar sus propios controles si desea que el elemento responda a eventos táctiles.

+0

Brilliant! ¡eso funciono! He encontrado bastantes inconstancias con Safari móvil y Safari de escritorio. Algunos de ellos, como la desactivación de la reproducción automática en video, están documentados en el sitio de Apple, pero parece que hay muchos caprichos indocumentados o me atrevo a decir errores. ¿Conoces algún recurso que enumere estas diferencias? –

+0

No pude hacer que funcione :(. ¿Cómo está exactamente creando el elemento de video? El mío se ve como y en JS estoy haciendo document.getElementById (" vid "). addEventListener ('click', function (e) {e.preventDefault(); alert (" clicked ");}) ; Funciona bien en safari de escritorio, pero no en ipad/iphone. Sugiera alguna solución. – bhups

+0

@bhups - si tiene alguna pregunta, haga una * pregunta *, no solo comente la respuesta de otra persona a un problema diferente. – Quentin

7

De mis propias experiencias bastante dolorosas en las últimas semanas puedo comenzar una lista (al menos para iPad 3.2). Algunas de estas "características" pueden estar documentadas, pero la oración relevante a menudo es difícil de encontrar.

  • volume La propiedad se ignora (se puede establecer, y aparecerá a cambiar, pero no se verá afectado el volumen real en el dispositivo). La propiedad currentTime es de solo lectura. Mi solución para esto es llamar al load(), que al menos me permite restablecer al principio del clip.
  • el evento onended no se publicará de manera confiable a menos que los controles estén visibles. Mi solución para esto es para controlar el evento timeupdate y comparar la currentTime a la duration
  • como usted dice, autobuffer y autoplay son discapacitados.
  • video no se almacenará en caché localmente independientemente de la configuración de la memoria caché de la aplicación.
  • muchas reglas CSS no parecen funcionar como se esperaba cuando se aplica a la etiqueta <video>, por ejemplo. opacity y z-index ambos parecen ineficaces, lo que significa que no puede atenuar u ocultar un video. Puede establecer display:none, pero eso es muy abrupto.

Como digo, probablemente esta no sea una lista exhaustiva, y me gustaría adiciones o correcciones.

(También, después de mucho googling, he encontrado una lista here de la escasa subconjunto de QT métodos y propiedades plugin que se apoyan en Mobile Safari).

+1

Gran respuesta También he experimentado todo lo anterior y necesitaba aprenderlo de la manera difícil. ¡Espero que alguien lea esto antes del inicio del desarrollo! – Develoger

+0

Lo mismo aquí, los videos en tales dispositivos pueden ser un gran dolor. Mis últimas 2 semanas han sido terribles y obtuve casi las mismas conclusiones de esta excelente respuesta. – Nobita

Cuestiones relacionadas