2010-12-21 16 views

Respuesta

0

Prueba esto:

<meta name="viewport" content="width=device-width; initial-scale=1.0; user-scalable:no;"> 

Source

+0

pero ¿puedes hacerlo en javascript? –

+0

No es una respuesta sino una preocupación. ¿Qué sucede si el usuario deshabilita javascript en su dispositivo móvil? ¿Está apuntando solo a navegadores móviles usando Safari? – ngen

1

Por lo que yo sé, puede cambiar el factor de zoom el tamaño del texto cambiando el estilo '-webkit-text-size-adjust' del cuerpo elemento.

Comprobar este enlace para más información:

http://developer.apple.com/library/safari/#documentation/AppleApplications/Reference/SafariCSSRef/Articles/StandardCSSProperties.html%23//apple_ref/doc/uid/TP30001266--webkit-text-size-adjust

+0

Necesito poder configurar el nivel de zoom de todo el navegador a través de JavaScript. Específicamente, necesito capturar un doble toque y configurar el nivel de zoom en una cantidad que me parezca apropiada. No quiero cambiar los tamaños de los elementos DOM para lograr esto. El usuario debe poder cambiar de un zoom de pellizco para hacer doble clic en el zoom sin problemas. – JoshNaro

+0

Entonces, ¿qué quieres que se haga de forma diferente a los gestos originales de doble toque/pinch para Safari? –

10

[ACTUALIZADO ] Parece que desea capturar dobles grifos en Safari móvil. Puede hacerlo manejando el evento touchend, o usar un marco disponible, tal como se proporciona en this site.

Tome un vistazo a la demo revisado: http://jsbin.com/atayo4/20

<p id="tap">double tap to zoom</p> 
    <input id="zoomWidth" type="text" value="400" /> 
    <p id="feedback"></p> 

$(document).ready(function(){ 
    $('#tap').doubletap(
    // double tap handler 
    function(e) { 
     $('#feedback').addClass('red').html('double tap! Zoom width: ' + $('#zoomWidth').val()); 

     var zoomWidth = $('#zoomWidth').val(); 

     // zoom with the new width 
     $('meta[name="viewport"]').attr('content', 'width=' + zoomWidth + ', user-scalable:no'); 

     $('#zoomWidth').val(parseInt(zoomWidth, 10) - 25); 
    }, 

    // single tap handler 
    function(e) { 
     $('#feedback').removeClass('red').html('single tap! Zoom width: ' + $('#zoomWidth').val()); 
    }, 

    // double tap delay, default 500 
    400 
    ); 
}); 
1

he intentado manipular las escalas mín/máx y el ancho de la etiqueta meta con JavaScript en vano. En lugar de tratar de establecer el nivel de zoom con el código (estoy pensando que no es posible), voy a crear pequeños cuadros invisibles sobre mi imagen relativamente grande. Esto permitirá a los usuarios acercar (y alejar) mediante doble toque nativo en secciones interesantes de la imagen.

+0

También traté de simular un evento de doble toque utilizando 'document.createEvent (" TouchEvent ");', '.initTouchEvent (...)', 'document.createTouch (...)' y todo ese jazz, sin embargo, sin éxito. Los eventos son reconocidos por el motor de JavaScript, pero no por el controlador de vista de Safari. –

+0

Esto fue hace un tiempo, pero creo que acabamos cambiando anchuras y alturas y cargando imágenes de mayor calidad como una alternativa. Es decir, hacemos un zoom artificial. – JoshNaro

+0

Solución interesante, gracias por el seguimiento. Me acabo de dar cuenta de que uno puede cambiar el nivel de zoom manipulando la etiqueta meta [name = viewport]. No es una transición suave, pero quizás uno puede leer las dimensiones de la ventana y la posición de desplazamiento y luego ajustar sucesivamente el ancho y los parámetros de escala máxima/mínima. –

Cuestiones relacionadas