2011-06-22 12 views
5

Estoy volver a colocar la pregunta de otra persona que encontré en los grupos de Google, estoy teniendo un problema similar:Phonegap - ¿Evita la rotación mientras se mantiene habilitada la orientación automática?


tengo una aplicación que requiere que todo sea en vertical, a excepción de cuando se reproduce un vídeo. En iOS, cuando se pasa la reproducción de video al reproductor Quicktime, quiero que el video se pueda reproducir en modo Paisaje. Actualmente, el video solo se reproduce en Portrait, ya que parece heredar el retrato, solo desde la aplicación de phonegap. Mi solución puede ser cambiar Phonegap.plist para rotar automáticamente, pero me gustaría poder usar javascript para detectar los cambios de rotación y evitarlos en todas las páginas de la aplicación, excepto para la reproducción de video. ¿Esto suena factible? ¿Hay alguna otra forma de forzar la orientación horizontal solo para una página específica de la aplicación? Gracias!


He intentado lo siguiente con rotación automática activada, sin éxito:

$(document).ready(function(){ 
    document.addEventListener('orientationchange', function(e) { e.preventDefault(); }, false); 
}); 
+0

¿Puede ser más específico acerca de su contexto? Estoy viendo iPhone, JavaScript, Android, no estoy seguro incluso de la plataforma a la que te refieres. –

+0

Supongo que ... vincent está trabajando con Phonegap lib, donde codificará una vez y obtendrá las compilaciones para iOS, Android, etc. (que admite Phonegap). –

+0

success_anil tiene razón. Estoy planeando construir para iPhone y Android. Sin embargo, en esta etapa, solo una solución de iPhone sería suficiente. Estoy usando HTML5, jQuery y jQtouch. – Vincent

Respuesta

2
$(window).bind("orientationchange", function(){ 
    var orientation = window.orientation; 
    var new_orientation = (orientation) ? 0 : 180 + orientation; 
    $('body').css({ 
     "-webkit-transform": "rotate(" + new_orientation + "deg)" 
    }); 
}); 

Ésta es una forma arriesgada, pero piensa que es la única manera ..

alternativa puede enlazar al evento de cambio de tamaño de la ventana.

$(window).bind("resize", function(){ 
    var orientation = window.orientation; 
    var new_orientation = (orientation) ? 0 : 180 + orientation; 
    $('body').css({ 
     "-webkit-transform": "rotate(" + new_orientation + "deg)" 
    }); 
}); 

de escribir este pequeño script hace un tiempo: Se soluciona el error de devolución de llamada se multiplican en IOS cambiar el tamaño de safari y el/tardío/temprano-trigger no (1) orientationChange error en el androide.

(1) ¿A veces no se activa a veces antes y algunas veces después de que el navegador tiene cambios de ancho + alto? ¡Con cable!

if (!(/iphone|ipad/gi).test(navigator.appVersion)) { 
    $(window).unbind("resize").bind("resize", function() { 
     $(window).trigger("orientationchange"); 
    }); 
} 

Si no es así, iphone o ipad está activando el evento orientationchange en la ventana.

Por lo tanto, cuando va a enlazar cualquier función, cambie el tamaño de la orientación para que cambie de orientación.

Ver: http://jsfiddle.net/aalouv/sABRQ/1/

+0

¿Cómo incorporar esto en su archivo? ¿Esto solo va en la parte JS de mi archivo de índice? Házmelo saber, gracias! – nate8684

Cuestiones relacionadas