2011-09-07 12 views
5

Estoy tratando de capturar con precisión el alto y ancho de la ventana de un navegador móvil cuando la orientación cambia, pero (en Android, estoy probando) - cuando el oyente de orientación se dispara y se llama a la función para capturar la altura y el ancho de la ventana, el nuevo tamaño aún no se ha reflejado con precisión, por lo que termino teniendo que llamar a un retraso arbitrario para que las cosas se registren con el tamaño adecuado. ¿Cómo manejo esto? Aquí está mi código:android/javascript - problema con window.innerWidth y window orientationEvent disparando en el momento adecuado

window.addEventListener(orientationEvent, function() { 
    setTimeout("setViewport()", 500); 
    //setViewport(); 
}, false); 

function setViewport() { //Called each time orientation changes, including initial orientation 
    viewportW = window.innerWidth; //only reports the accurate window size if the function is called on a delay 
    viewportH = window.innerHeight; 
} 

Respuesta

0

utilizar el evento de cambio de tamaño en lugar

window.addEventListener('resize', function() { 
    viewportW = window.innerWidth; 
    viewportH = window.innerHeight; 
}, false); 

En caso de que desee cambiar en especial aquellos valores sólo cuando los cambios de orientación, puede utilizar window.matchMedia para verificar la orientación también cambió:

var portrait=(window.matchMedia("(orientation: portrait)")?true:false); 
Cuestiones relacionadas