これにメタ タグを使用しても機能しません。可能なメタタグorientationchange
とgesturechange
イベントのすべての組み合わせを試しました。タイムアウトとあらゆる種類の派手な JavaScript を試したところ、次のことがわかりました
:
この関連する質問を介して: iPhone で方向が変更されたときに Web アプリのスケール/ズームをリセットするにはどうすればよいですか?
その投稿で、Andrew Ashbacher は、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);
これは、IIFEで適切にラップされたソリューションであるため、名前空間の問題について心配する必要はありません。
それをスクリプト ( document.ready()
jQuery を使用している場合ではありません) と viola にドロップするだけです!
差し迫っているdevicemotion
ことを示すイベントのズームを無効にするだけです。orientationchange
実際に機能し、ズームを無効にしないため、これは私が見た中で最高のソリューションです。
編集: このアプローチは常に信頼できるとは限りません。特に、iPad を斜めに持っている場合はそうです。また、このイベントは第 1 世代の iPad では利用できないと思います