2010-05-01 26 views
12

Tengo 1 página que tiene 2 elementos DIV que se muestran/ocultan según el usuario, haga clic en los botones de acción con javascript, me gustaría alternar la escala en el botón de acción.Habilitar/deshabilitar el zoom en iPhone safari con Javascript?

He intentado con el siguiente javascript y está cambiando el meta de la ventana gráfica pero no tiene efecto.

¿Alguna sugerencia?

var ViewPortAllowZoom = 'width=device-width;'; 

var ViewPortNoZoom = 'width=device-width; initial-scale=1.0; maximum-scale=1.0; minimum-scale=1.0; user-scalable=no;'; 

    function AllowZoom(flag) { 
      if (flag == true) { 
       $('meta[name*=viewport]').attr('content', ViewPortAllowZoom);     
      } 
      else { 
       $('meta[name*=viewport]').attr('content', ViewPortNoZoom); 
      } 
     } 

Respuesta

19

Extracción y volver a agregar la etiqueta meta funcionó para mí:

function AllowZoom(flag) { 
    if (flag == true) { 
    $('head meta[name=viewport]').remove(); 
    $('head').prepend('<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=10.0, minimum-scale=1, user-scalable=1" />'); 
    } else { 
    $('head meta[name=viewport]').remove(); 
    $('head').prepend('<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=0" />');    
    } 
} 

Sin embargo, si el usuario se acerca y luego cambia a sin zoom, el visor permanece con zoom y el usuario ya no puede cambiar el zoom ¿Alguien tiene una solución para eso?

+1

content = "width = 960" obliga a pasar un zoom "fuera" en la vista vertical. –

+0

no funciona en el navegador nativo Android 4.2; si elimina el zoom, no podrá volver a habilitarlo restaurando los atributos de metaetiqueta tal como se hace en esta función. – guari

7
$('body').bind('touchmove', function(event) { event.preventDefault() }); // turns off 

$('body').unbind('touchmove'); // turns on 
+0

+1 ¡Definitivamente la solución más limpia! – Novocaine

+0

¿Eso no deshabilita el desplazamiento también? – maddrag0n

+0

ahora no puedo tocar nada – zeion

0

Estos son los pasos para desactivar el zoom:

  1. convencer a su PM que la desactivación es una mala idea (véase el artículo siguiente).
  2. Si todavía lo quiere, convencerlo más.
  3. Si todavía lo quiere, lea este artículo y añadir a preventDefault gesturestart como se explica en un comentario en ese país: https://wouterdeschuyter.be/blog/how-to-disable-viewport-scaling-in-ios-10-you-dont-941140811

Funciona en iPhone 6 y no bloquea el desplazamiento.

Gracias por enlace, Aloober: https://stackoverflow.com/a/41166167/1409261

Cuestiones relacionadas