W Safari na iOS 10 można zapobiec skalowaniu strony internetowej, ale będzie to wymagało więcej pracy z Twojej strony. Domyślam się, że argument jest taki, że stopień trudności powinien powstrzymać twórców kultowych ładunków przed dodawaniem „user-scalable = no” do każdego znacznika viewport i niepotrzebnie utrudniającym pracę użytkownikom z dysfunkcją wzroku.
Mimo to chciałbym, aby firma Apple zmieniła swoją implementację, aby istniał prosty (metatag) sposób na wyłączenie podwójnego dotknięcia, aby powiększyć. Większość trudności dotyczy tej interakcji.
Możesz przerwać powiększanie przez szczypanie za pomocą czegoś takiego:
document.addEventListener('touchmove', function (event) {
if (event.scale !== 1) { event.preventDefault(); }
}, false);
Należy zauważyć, że jeśli jakiekolwiek głębsze cele wywołują stopPropagation w zdarzeniu, zdarzenie nie dotrze do dokumentu, a ten detektor nie zapobiegnie skalowaniu.
Wyłączenie podwójnego dotknięcia, aby powiększyć jest podobne. Wyłączasz dowolne dotknięcie dokumentu, które ma miejsce w ciągu 300 milisekund od poprzedniego dotknięcia:
var lastTouchEnd = 0;
document.addEventListener('touchend', function (event) {
var now = (new Date()).getTime();
if (now - lastTouchEnd <= 300) {
event.preventDefault();
}
lastTouchEnd = now;
}, false);
Jeśli nie skonfigurujesz poprawnie elementów formularza, skupienie się na danych wejściowych spowoduje automatyczne powiększenie, a ponieważ w większości wyłączyłeś ręczne powiększanie, teraz prawie niemożliwe będzie cofnięcie powiększenia. Upewnij się, że rozmiar czcionki wejściowej to> = 16 pikseli.
Jeśli próbujesz rozwiązać ten problem w WKWebView w aplikacji natywnej, powyższe rozwiązanie jest wykonalne, ale jest to lepsze rozwiązanie: https://stackoverflow.com/a/31943976/661418 . Jak wspomniano w innych odpowiedziach, w iOS 10 beta 6 firma Apple dostarczyła teraz flagę, która ma honorować metatag.
Aktualizacja z maja 2017 r .: Zastąpiłem starą metodę wyłączania powiększania przez szczypanie, polegającą na sprawdzaniu długości dotknięcia przy starcie dotykowym, prostszym podejściem do sprawdzania zdarzenia. Skalowanie po dotknięciu. Powinien być bardziej niezawodny dla każdego.