views:

956

answers:

4

I'm unable to get the height of a page in javascript when the page is larger than the screen.

I thought this would get me the right height:

$(document).height();

but that only gets the height of the screen, same as:

$('body').height();

same as:

document.offsetHeight;

For some reason all these examples only return the height of the screen. Can somebody help?

A: 

I think you need to add window.pageYOffset (the amount the page has been scrolled, in pixels).

http://www.quirksmode.org/dom/w3c_cssom.html

David Toso
A: 

Not sure about JQuery. But this link, might help you to understand various properties and how they behave in different modes in different browsers.

http://www.softcomplex.com/docs/get_window_size_and_scrollbar_position.html

Ramesh
A: 
document.body.scrollHeight

works on my machine.

Randell
+3  A: 

Using jQuery (which you did specify), $(document).height() will return exactly what you're asking for.

To clarify the usage of the height() method:

$('.someElement').height(); // returns the calculated pixel height of the element(s)
$(window).height();         // returns height of browser viewport
$(document).height();       // returns height of HTML document

I suspect, that if $(document).height() is not working for you, something is wrong. You may be:

  1. Calling it too early. Like, before the DOM is ready
  2. Have some uncleared floats that are not causing some block level elements to expand to their real height. Thus messing up height calculations.
  3. Have something critical absolutely positioned. Absolutely positioned elements do not contribute towards height calculations of their parent elements.
jason
Thanks jason. I called the function too early as you said in your first suggestion. For each new page a have some ajax stuff working to refresh several parts of the page.
jasperdejong