2010-06-14 19 views
6

Tengo esto en el <head>:Escuchadores de eventos en HTML5 ¿El video en el iPad Safari no funciona?

<script> 
     function log(event){ 
    var Url = "./log.php?session=<?php echo session_id(); ?>&event=" + event; 

     xmlHttp = new XMLHttpRequest(); 
     xmlHttp.open("GET", Url, true); 
     xmlHttp.send(null); 

    } 
</script> 

Y esto en el <body>:

<video id="video" src="./video/LarryVideo.mp4" 
    controls="controls" 
    poster="./img/video_poster.jpg" 
    onabort="log('onabort');" 
    oncanplay="log('oncanplay');" 
    oncanplaythrough="log('oncanplaythrough');" 
    ondurationchange="log('ondurationchange');" 
    onemptied="log('onemptied');" 
    onended="log('onended');" 
    onerror="log('onerror');" 
    onloadeddata="log('onloadeddata');" 
    onloadedmetadata="log('onloadedmetadata');" 
    onloadstart="log('onloadstart');" 
    onpause="log('onpause');" 
    onplay="log('onplay');" 
    onplaying="log('onplaying');" 
    onprogress="log('onprogress');" 
    onratechange="log('onratechange');" 
    onreadystatechange="log('onreadystatechange');" 
    onseeked="log('onseeked');" 
    onseeking="log('onseeking');" 
    onstalled="log('onstalled');" 
    onsuspend="log('onsuspend');" 
    ontimeupdate="log('ontimeupdate');" 
    onvolumechange="log('onvolumechange');" 
    onwaiting="log('onwaiting');"> 
    <script> 
     QT_WriteOBJECT('./video/LarryVideo.mp4', 
      '380px', '285px',   // width & height 
      '',       // required version of the ActiveX control, we're OK with the default value 
      'scale', 'tofit',   // scale to fit element size exactly so resizing works 
      'emb#id', 'video_embed', // ID for embed tag only 
      'obj#id', 'video_obj');  // ID for object tag only 
    </script> 
</video> 

Mi Safari normales crea buenas entradas de archivo de registro como se esperaba. Mobile Safari de iPad, sin embargo, no hace nada en absoluto.

¿Qué podría estar mal con esto?

Gracias!

Respuesta

36

No he podido obtener un readystate en un ipad tampoco, pero puede obtener otros eventos que más o menos le permiten inferir el readystate.

var audio = new Audio("someSource.mp3"); 
    audio.play(); 
/* you may need to use .load() depending on how the event was initiated */ 
    audio.addEventListener("canplay", handleCanPlay, false); 
    audio.addEventListener("durationchange", handleDurationChange, false); 

Pero deja que quede claro, el problema es de Apple diciendo más o menos todo el maldito mundo que están usando la Internet equivocada. De acuerdo, todos odian los sitios que comienzan a reproducir música en el segundo que cargan, pero luego Apple se vuelve loco y mata TODO/TODO el almacenamiento de audio/video que no se inicia explícitamente por un gesto del usuario porque Apple aparentemente cree que sus usuarios están demasiado retrasados ​​para pulse "volver" si un sitio los molesta; fanboys están de acuerdo también. Esto básicamente nos deja al resto de nosotros para hackear la mierda de nuestras aplicaciones si nos atrevemos a tratar y administrar cualquier tipo de efectos de sonido. Sé que este no es el lugar para despotricar ... pero me condenarán si construir CUALQUIER experiencia suave e interesante en HTML5 en el iPad no es una facepalm tras otra ... ya sea el límite de caché de 5 mb que simplemente bloquea el navegador si una página tiene demasiadas (según Apple) o la dificultad de precargar cualquier tipo de medio para mejorar la interfaz de usuario. En serio, fuera de los blogs de wordpress y los lectores de rss, la implementación de HTML5 de Mobile Safari no tiene ningún valor. Y así, el sueño de la proposición de valor HTML5 "construir una vez, jugar en cualquier lugar" está muerto y volvemos a desarrollar aplicaciones nativas ... al menos esto nos da una buena seguridad de trabajo/despotricar

+10

Ofreció una solución alternativa. Y demonios, lo voté por la diatriba. –

+0

Comparto >> cada fck * ng day <<, la misma queja. Gracias por su punto claro e incisivo sobre este asunto. – ppalmeida

Cuestiones relacionadas