Skip to content

Instantly share code, notes, and snippets.

@benjamincharity
Forked from keithchu/fixorientationzoom.js
Created August 12, 2013 04:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save benjamincharity/6208184 to your computer and use it in GitHub Desktop.
Save benjamincharity/6208184 to your computer and use it in GitHub Desktop.
/*
An attempt at fixing the dreaded iOS orientationchange zoom bug http://adactio.com/journal/5088/. Seems to work!
Authored by @scottjehl
MIT License.
*/
(function(w){
var doc = w.document;
if( !doc.querySelectorAll ){ return; }
var meta = doc.querySelectorAll( "meta[name=viewport]" )[ 0 ],
initialContent = meta && meta.getAttribute( "content" ),
disabledZoom = initialContent + ", maximum-scale=1.0",
enabledZoom = initialContent + ", maximum-scale=10.0",
enabled = true,
orientation = w.orientation,
rotation = 0;
if( !meta ){ return; }
function restoreZoom(){
meta.setAttribute( "content", enabledZoom );
document.body.innerHTML = document.body.innerHTML;
enabled = true;
}
function disableZoom(){
meta.setAttribute( "content", disabledZoom );
enabled = false;
}
function checkTilt( e ){
orientation = Math.abs( w.orientation );
rotation = Math.abs( e.accelerationIncludingGravity.x );
if( rotation > 8 && orientation === 0 ){
if( enabled ){
disableZoom();
}
}
else {
if( !enabled ){
restoreZoom();
}
}
}
w.addEventListener( "orientationchange", restoreZoom, false );
w.addEventListener( "devicemotion", checkTilt, false );
})( this );
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment