2009-08-14 19 views
6

¿Alguien sabe cómo obtener el tamaño en píxeles o el valor de escala de la ventana gráfica después de que un usuario pellizcó o tocó dos veces para acercar o alejar una página en JavaScript?¿Cómo se obtiene la escala de ventana gráfica después de pellizcar/acercar en una aplicación web de iPhone?

He intentado usar window.innerWidth pero he tenido resultados mixtos. A veces parece dar con precisión el número de píxeles que muestra la ventana gráfica, sin embargo, si hago un acercamiento de una página y luego hago un gran pellizco para alejar la imagen, window.innerWidth estará alrededor de 600-700 aunque solo sea mostrando ~ 200px de la página. La página tiene solo 400 píxeles de ancho y no muestra el fondo de cuadros "has ido demasiado lejos" que ves cuando alejas el tamaño de página.

Si hago pequeños pellizcos para acercar y alejar, window.innerWidth parece funcionar bien. Lamentablemente, no puedo confiar en un usuario que solo hace pequeños gestos de pellizco :)

También traté de usar la propiedad de escala en el objeto de evento de gesto, pero he encontrado que no es confiable porque no siempre se sabe la escala inicial cuando recarga la página o usa los botones atrás/adelante para navegar hacia ella incluso cuando usa la metaetiqueta para especificarla.

En definitiva, estoy tratando de crear una aplicación que sepa cuándo un usuario está tratando de alejarse más allá del nivel de zoom máximo, así que si hay otra manera de hacerlo me interesa saberlo :)

Aquí está el código que estoy usando para obtener la innerWidth:

document.body.addEventListener('gestureend', function (evt) { 
    console.log(window.innerWidth); // inaccurate when doing large pinch gestures 
}, false); 

Gracias!

Respuesta

2

Si sólo está tratando de limitar el nivel máximo de zoom, se puede utilizar una etiqueta de control de visualización Safari-específica:

<meta name="viewport" content="maximum-scale=2.0"> 

Véase el Safari móvil específico viewport meta tag spec para más detalles.

Cuestiones relacionadas