Es posible evitar el escalado de la página web en Safari en iOS 10, pero implicará más trabajo de su parte. Supongo que el argumento es que un cierto grado de dificultad debería evitar que los desarrolladores de culto de carga dejen "escalable por el usuario = no" en cada etiqueta de ventana gráfica y dificulten innecesariamente las cosas para los usuarios con discapacidad visual.
Aún así, me gustaría ver a Apple cambiar su implementación para que haya una forma simple (metaetiqueta) de desactivar el doble toque para hacer zoom. La mayoría de las dificultades se relacionan con esa interacción.
Puede detener pellizcar para hacer zoom con algo como esto:
document.addEventListener('touchmove', function (event) {
if (event.scale !== 1) { event.preventDefault(); }
}, false);
Tenga en cuenta que si algún objetivo más profundo llama a stopPropagation en el evento, el evento no alcanzará el documento y este escucha no impedirá el comportamiento de escala.
Deshabilitar el doble toque para hacer zoom es similar. Deshabilita cualquier toque en el documento que ocurra dentro de los 300 milisegundos del toque anterior:
var lastTouchEnd = 0;
document.addEventListener('touchend', function (event) {
var now = (new Date()).getTime();
if (now - lastTouchEnd <= 300) {
event.preventDefault();
}
lastTouchEnd = now;
}, false);
Si no configura correctamente los elementos de su formulario, al enfocar en una entrada se aplicará un zoom automático, y dado que en su mayoría ha desactivado el zoom manual, ahora será casi imposible quitar el zoom. Asegúrese de que el tamaño de la fuente de entrada sea> = 16px.
Si está tratando de resolver esto en un WKWebView en una aplicación nativa, la solución dada anteriormente es viable, pero esta es una mejor solución: https://stackoverflow.com/a/31943976/661418 . Y como se menciona en otras respuestas, en iOS 10 beta 6, Apple ahora ha proporcionado una bandera para honrar la metaetiqueta.
Actualización de mayo de 2017: reemplacé el antiguo método 'comprobar toques de longitud en el inicio táctil' para deshabilitar el pellizco-zoom con un enfoque más simple 'comprobar evento.escala en movimiento táctil'. Debería ser más confiable para todos.