Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Normalized hide address bar for iOS & Android
/*
* Normalized hide address bar for iOS & Android
* (c) Scott Jehl, scottjehl.com
* MIT License
*/
(function( win ){
var doc = win.document;
// If there's a hash, or addEventListener is undefined, stop here
if( !location.hash && win.addEventListener ){
//scroll to 1
window.scrollTo( 0, 1 );
var scrollTop = 1,
getScrollTop = function(){
return win.pageYOffset || doc.compatMode === "CSS1Compat" && doc.documentElement.scrollTop || doc.body.scrollTop || 0;
},
//reset to 0 on bodyready, if needed
bodycheck = setInterval(function(){
if( doc.body ){
clearInterval( bodycheck );
scrollTop = getScrollTop();
win.scrollTo( 0, scrollTop === 1 ? 0 : 1 );
}
}, 15 );
win.addEventListener( "load", function(){
setTimeout(function(){
//at load, if user hasn't scrolled more than 20 or so...
if( getScrollTop() < 20 ){
//reset to hide addr bar at onload
win.scrollTo( 0, scrollTop === 1 ? 0 : 1 );
}
}, 0);
} );
}
})( this );
@ambientp
Copy link

ambientp commented Jan 3, 2012

@kreaninw
Copy link

kreaninw commented Feb 2, 2012

Thanks for the code. At first I tested and the code didn't work, I though it has to be something wrong. And just to note that, if your site contains an event that use jQuery scrollTop to y 0, it will override the code and cause it not to work on Android. So, I added +1 to my scrollTop value and it solved the issue completely.

@capdragon
Copy link

capdragon commented Mar 14, 2012

Not working :/

@kreaninw
Copy link

kreaninw commented Mar 14, 2012

It's working perfectly(not test on ICS yet). The other thing that it won't work is your page is too shot.

@scottjehl
Copy link
Author

scottjehl commented Mar 14, 2012

There's a repo here with more recent code, fwiw https://github.com/scottjehl/Hide-Address-Bar

@chriv
Copy link

chriv commented Apr 30, 2012

I swear, I cannot get any version of this to work. window.scrollTo(0,0) ; window.scrollTo(0,1) ; hideAddressBar() above ; hideaddressbar.js ; anything. here's where I'm trying it: https://beta.buildingindustryservices.com/payapp . Cannot imagine what I'm doing wrong. I keep uploading code to my server and I test it in four browsers:

  • Android (ICS) Browser (usually fails)
  • Android Dolphin HD Browser (only scrolls 1 pixel or nothing)
  • Android Chrome Beta Browser (doesn't scroll)
  • Android FireFox Browser (not beta) (worse than doesn't scroll - extends page too far)
    I don't have an iPhone to test on.
    I'm open to suggestions. I've been tweaking code to do this for 2 months (no, it's not the only thing I've been coding).

@hedefalk
Copy link

hedefalk commented Mar 1, 2013

Does this work in ios6? I had a simple window.scrollTo( 0, 1 ); that works in <= ios5 but not in ios6.

Thanks, Viktor

@NeroLang
Copy link

NeroLang commented May 6, 2014

it doesn't work.

@MichelArendt
Copy link

MichelArendt commented May 16, 2014

Apparently, not working properly anymore. It adds extra padding...

@harshamv
Copy link

harshamv commented Jun 25, 2014

does this work?

@FabianGabor
Copy link

FabianGabor commented Jul 22, 2014

It doesn't work in Android v4.x

@frontenddeveloping
Copy link

frontenddeveloping commented Jun 18, 2015

This is outdated. Thanks for this snippet. Works on iOS 7- only.

@yazeryanski
Copy link

yazeryanski commented Jan 3, 2021

2020 | That does not work (

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment