Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save mathiasbynens/901295 to your computer and use it in GitHub Desktop.
Save mathiasbynens/901295 to your computer and use it in GitHub Desktop.

Revisions

  1. mathiasbynens revised this gist Apr 12, 2011. 1 changed file with 15 additions and 11 deletions.
    26 changes: 15 additions & 11 deletions ios-viewport-scaling-bug-fix.js
    Original file line number Diff line number Diff line change
    @@ -1,19 +1,23 @@
    // My rewritten version
    // Rewritten version
    // By @mathias, @cheeaun and @jdalton

    (function(doc) {

    var metas = doc.querySelectorAll('meta[name="viewport"]'),
    forEach = [].forEach;
    var addEvent = 'addEventListener',
    type = 'gesturestart',
    qsa = 'querySelectorAll',
    scales = [1, 1],
    meta = qsa in doc ? doc[qsa]('meta[name=viewport]') : [];

    function fixMetas(isFirstTime) {
    var scales = isFirstTime === true ? ['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];
    });
    function fix() {
    meta.content = 'width=device-width,minimum-scale=' + scales[0] + ',maximum-scale=' + scales[1];
    doc.removeEventListener(type, fix, true);
    }

    fixMetas(true);

    doc.addEventListener('gesturestart', fixMetas, false);
    if ((meta = meta[meta.length - 1]) && addEvent in doc) {
    fix();
    scales = [.25, 1.6];
    doc[addEvent](type, fix, true);
    }

    }(document));
  2. mathiasbynens revised this gist Apr 4, 2011. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion ios-viewport-scaling-bug-fix.js
    Original file line number Diff line number Diff line change
    @@ -14,6 +14,6 @@

    fixMetas(true);

    doc.body.addEventListener('gesturestart', fixMetas, false);
    doc.addEventListener('gesturestart', fixMetas, false);

    }(document));
  3. mathiasbynens revised this gist Apr 4, 2011. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion ios-viewport-scaling-bug-fix.js
    Original file line number Diff line number Diff line change
    @@ -6,7 +6,7 @@
    forEach = [].forEach;

    function fixMetas(isFirstTime) {
    var scales = isFirstTime ? ['1.0', '1.0'] : ['0.25', '1.6'];
    var scales = isFirstTime === true ? ['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];
    });
  4. mathiasbynens revised this gist Apr 4, 2011. 2 changed files with 0 additions and 0 deletions.
  5. mathiasbynens revised this gist Apr 4, 2011. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion iphone-viewport-scaling-bug-fix-original.js
    Original file line number Diff line number Diff line change
    @@ -1,4 +1,4 @@
    // Original code form 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;
  6. mathiasbynens revised this gist Apr 4, 2011. 1 changed file with 7 additions and 8 deletions.
    15 changes: 7 additions & 8 deletions iphone-viewport-scaling-bug-fix.js
    Original file line number Diff line number Diff line change
    @@ -1,20 +1,19 @@
    // My rewritten version

    (function() {
    (function(doc) {

    var metas = document.querySelectorAll('meta[name="viewport"]'),
    var metas = doc.querySelectorAll('meta[name="viewport"]'),
    forEach = [].forEach;

    function fixMetas(firstTime) {
    function fixMetas(isFirstTime) {
    var scales = isFirstTime ? ['1.0', '1.0'] : ['0.25', '1.6'];
    forEach.call(metas, function(el) {
    el.content = firstTime
    ? 'width=device-width,minimum-scale=1.0,maximum-scale=1.0'
    : 'width=device-width,minimum-scale=0.25,maximum-scale=1.6';
    el.content = 'width=device-width,minimum-scale=' + scales[0] + ',maximum-scale=' + scales[1];
    });
    }

    fixMetas(true);

    document.body.addEventListener('gesturestart', fixMetas, false);
    doc.body.addEventListener('gesturestart', fixMetas, false);

    }());
    }(document));
  7. mathiasbynens revised this gist Apr 4, 2011. 1 changed file with 1 addition and 0 deletions.
    1 change: 1 addition & 0 deletions iphone-viewport-scaling-bug-fix.js
    Original file line number Diff line number Diff line change
    @@ -1,4 +1,5 @@
    // My rewritten version

    (function() {

    var metas = document.querySelectorAll('meta[name="viewport"]'),
  8. mathiasbynens revised this gist Apr 4, 2011. 2 changed files with 20 additions and 0 deletions.
    19 changes: 19 additions & 0 deletions iphone-viewport-scaling-bug-fix-original.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,19 @@
    // Original code form 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";
    }
    }
    }
    1 change: 1 addition & 0 deletions iphone-viewport-scaling-bug-fix.js
    Original file line number Diff line number Diff line change
    @@ -1,3 +1,4 @@
    // My rewritten version
    (function() {

    var metas = document.querySelectorAll('meta[name="viewport"]'),
  9. mathiasbynens renamed this gist Apr 4, 2011. 1 changed file with 0 additions and 0 deletions.
  10. mathiasbynens created this gist Apr 4, 2011.
    18 changes: 18 additions & 0 deletions Fix for iPhone viewport scaling bug
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,18 @@
    (function() {

    var metas = document.querySelectorAll('meta[name="viewport"]'),
    forEach = [].forEach;

    function fixMetas(firstTime) {
    forEach.call(metas, function(el) {
    el.content = firstTime
    ? 'width=device-width,minimum-scale=1.0,maximum-scale=1.0'
    : 'width=device-width,minimum-scale=0.25,maximum-scale=1.6';
    });
    }

    fixMetas(true);

    document.body.addEventListener('gesturestart', fixMetas, false);

    }());