Utilizzando la maximum-scale
e minimum-scale
per fermare lo zoom don' Funziona davvero perché poi togli l'abilità dell'utente di zoomare. Questo è davvero una cattiva idea, perché rende gli utenti con gli occhi cattivi arrabbiato che il vostro sito non zoomare, mentre altri siti fanno ...
ho provato timeout e tutti i tipi di javascript fantasia, quindi ho trovato questo: https://github.com/scottjehl/iOS-Orientationchange-Fix
tramite questa domanda correlata: How do I reset the scale/zoom of a web app on an orientation change on the iPhone?
In quel post, Andrew Ashbacher postato un link al codice scritto da Scott Jehl:
/*! A fix for the iOS orientationchange zoom bug. Script by @scottjehl, rebound by @wilto.MIT License.*/(function(m){if(!(/iPhone|iPad|iPod/.test(navigator.platform)&&navigator.userAgent.indexOf("AppleWebKit")>-1)){return}var l=m.document;if(!l.querySelector){return}var n=l.querySelector("meta[name=viewport]"),a=n&&n.getAttribute("content"),k=a+",maximum-scale=1",d=a+",maximum-scale=10",g=true,j,i,h,c;if(!n){return}function f(){n.setAttribute("content",d);g=true}function b(){n.setAttribute("content",k);g=false}function e(o){c=o.accelerationIncludingGravity;j=Math.abs(c.x);i=Math.abs(c.y);h=Math.abs(c.z);if(!m.orientation&&(j>7||((h>6&&i<8||h<8&&i>6)&&j>5))){if(g){b()}}else{if(!g){f()}}}m.addEventListener("orientationchange",f,false);m.addEventListener("devicemotion",e,false)})(this);
questo è un solut ion avvolto piacevolmente in un IIFE così non devi preoccuparti dei problemi di spazio dei nomi.
Basta inserirlo nella sceneggiatura (non in document.ready()
se si utilizza jQuery) e viola!
Tutto ciò che fa è disabilitare lo zoom sugli eventi devicemotion
che indicano che orientationchange
è imminente. È la soluzione migliore che ho visto perché funziona davvero e non disabilita lo zoom.
MODIFICA: questo approccio non è sempre affidabile, specialmente quando si tiene l'ipad inclinato. Inoltre, non penso che questo evento sia disponibile per gli ipad di gen 1
Ho appena eseguito alcuni test rudimentali e la per me ha funzionato miracoli: '' – Bitmanic
La scala iniziale ha fatto il trucco anche per me - su l'iPad. – cbuck12000
Questa è una buona soluzione per ciò che ritengo sia un bug nel safari mobile. Il metatag originale di clamp è il modo in cui normalmente creo i miei siti. Ho il sospetto che ci sia qualcosa nel DOM in Safari che non si comporta come previsto in alcuni siti per compromettere la larghezza della pagina che alla fine causa questo problema. – ghostfly