Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save ethanius/1319424 to your computer and use it in GitHub Desktop.

Select an option

Save ethanius/1319424 to your computer and use it in GitHub Desktop.
Improved version of JavaScript fix for the iOS viewport scaling bug. See http://www.blog.highub.com/mobile-2/a-fix-for-iphone-viewport-scale-bug/
// Original code from http://www.blog.highub.com/mobile-2/a-fix-for-iphone-viewport-scale-bug/
var metas = document.getElementsByTagName('meta');
var i;
if (navigator.userAgent.match(/iPhone/i)) {
for (i=0; i<metas.length; i++) {
if (metas[i].name == "viewport") {
metas[i].content = "width=device-width, minimum-scale=1.0, maximum-scale=1.0";
}
}
document.getElementsByTagName('body')[0].addEventListener("gesturestart", gestureStart, false);
}
function gestureStart() {
for (i=0; i<metas.length; i++) {
if (metas[i].name == "viewport") {
metas[i].content = "width=device-width, minimum-scale=0.25, maximum-scale=1.6";
}
}
}
// My rewritten version
(function(doc) {
var metas = doc.querySelectorAll('meta[name="viewport"]'),
forEach = [].forEach;
function fixMetas(isFirstTime) {
var scales = isFirstTime ? ['1.0', '1.0'] : ['0.25', '1.6'];
forEach.call(metas, function(el) {
el.content = 'width=device-width,minimum-scale=' + scales[0] + ',maximum-scale=' + scales[1];
});
}
fixMetas(true);
doc.body.addEventListener('gesturestart', fixMetas, false);
}(document));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment