hide iPhone address bar with 100% height

address-bar, hide, iphone, javascript, onload

Solution

This solution from Nate Smith helped me: How to Hide the Address Bar in a Full Screen Iphone or Android Web App.

Here's the essential bit:

var page   = document.getElementById('page'),
    ua     = navigator.userAgent,
    iphone = ~ua.indexOf('iPhone') || ~ua.indexOf('iPod');

var setupScroll = window.onload = function() {
  // Start out by adding the height of the location bar to the width, so that
  // we can scroll past it
  if (ios) {
    // iOS reliably returns the innerWindow size for documentElement.clientHeight
    // but window.innerHeight is sometimes the wrong value after rotating
    // the orientation
    var height = document.documentElement.clientHeight;
    // Only add extra padding to the height on iphone / ipod, since the ipad
    // browser doesn't scroll off the location bar.
    if (iphone && !fullscreen) height += 60;
    page.style.height = height + 'px';
  }
  // Scroll after a timeout, since iOS will scroll to the top of the page
  // after it fires the onload event
  setTimeout(scrollTo, 0, 0, 1);
};

For more details, check out his blog post or the Gist.

Problem

Many posts on this, but not quite for my situation. My page has flexible dimensions set to 100% width and 100% height, so the typical on-load scroll function isn't working. Any thoughts or other solutions? Thanks! CSS: ``` * { margin:0; padding:0; } html, body { width:100%; height:100%; min-width:960px; overflow:hidden; } ``` Javascript: ``` /mobile/i.test(navigator.userAgent) && !pageYOffset && !location.hash && setTimeout(function () { window.scrollTo(0, 1); }, 1000);​ ```

Original source