I have a div with defined height, and overflow:scroll;
. Its content is too long so scrollbars appear.
Now for the ichy part. Some of its inner HTML strangely appears all the time (to be precise, the footer of a table generated by the tableFilter plugin). I'd like to make this footer disappear when it is not needed (it actually appears out of the containing <div>
's border). I resolved to make it disappear but setting its z-index
to -1000
. But I want to make it appear when the containing <div>
is totally scrolled down.
How can I know the user has scrolled at the bottom ?
Using the help from answers below, I used scrollTop
attribute but the difference between scrollTop
and innerHeight
is the size of the scrollbar plus some unidentified delta. A scrollbar is 16 pixels high in most browsers under Windows, but I get a difference of 17 in Firefox and something like 20 in IE, where my <div>
content's borders seems to be rendered bigger.
A way (actually two ways...) to compute the scrollbar size has been given there.
You need to compare the div height with the scrollTop position and the element height.
This is not limited to divs:
from MDN Element.scrollHeight. There's also a nice demo on that page.
You can know if the div is scrolled down by simply doing this:
It works on Firefox, Chrome and IE8
No jQuery needed to get that info:
In a scroll event of your DIV, use that info to check against the height of the element, if it matches (or is close to matching) do whatever you want.
You just need to use the scrollHeight property of the div instead of height. The function isScrollBottom() which Shaun Humphries wrote previously can be put like this