Использование метатегов для этого не работает. Я перепробовал каждую комбинацию мета-тегов и orientationchange
и gesturechange
событий, пробовал тайм-ауты и всевозможные необычные 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 под углом. Кроме того, я не думаю, что это событие доступно для ipad поколения 1