Использование maximum-scale
и minimum-scale
, чтобы остановить масштабирование, на самом деле не работает, потому что тогда вы лишаете пользователя возможности масштабирования. Это действительно плохая идея, потому что ваши пользователи злыми глазами злятся, что ваш сайт не масштабируется, в то время как другие сайты делают ...
Я попробовал тайм-ауты и все виды причудливых javascript, затем я нашел это:
https://github.com/scottjehl/iOS-Orientationchange-Fix
через этот связанный вопрос: Как сбросить масштаб / масштаб веб-приложения при изменении ориентации на iPhone?
В этом посте Эндрю Ашбахер разместил ссылку на код, написанный Скоттом Джелем:
/*! 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);
Это решение хорошо обернуто в IIFE , поэтому вам не нужно беспокоиться о проблемах с пространством имен.
Просто вставьте его в свой скрипт (не в document.ready()
, если вы используете jQuery) и альт!
Все, что он делает, это отключает увеличение на devicemotion
событиях, которые указывают на неизбежность orientationchange
. Это лучшее решение, которое я когда-либо видел, потому что оно действительно работает и не отключает масштабирование.
РЕДАКТИРОВАТЬ: этот подход не всегда надежен, особенно когда вы держите Ipad под углом. Кроме того, я не думаю, что это событие доступно для ipads 1-го поколения