Himanshu P Himanshu P - 6 months ago 39
Javascript Question

Why is body.scrollTop deprecated?

It seems

body.scrollTop
(and
body.scrollLeft
) are deprecated in ES5 strict-mode. What is the reason for this, given that it still seems okay to use these properties on other
DOMElement
s?

Background Info:

I have a function that tries to increase (or decrease, as specified) the
scrollTop
values of all the ancestors of an
element
, till one of these actually changes. I am wondering if, to stay complaint with strict-mode, I should specifically check against the
body
element as the chain of parents moves upward.

[Obviously,
body
refers to
document.body
]

sam sam
Answer

The scrolling viewport is represented by document.documentElement (<html>) in standards mode or <body> in quirks mode. (Quirks mode emulates the document rendering of Navigator 4 and Explorer 5.)

Chrome uses body.scrollTop to represent the viewport's scroll position in both modes, which is wrong. It sounds like they want to fix this so they're encouraging authors to script for the standard behavior.

I don't think you need to change your code. There's nothing wrong with using body.scrollTop in standards mode so long as you understand it represents the scroll position of body only (typically 0, unless you've given body a scroll box).

You can see the warning by executing document.body.scrollTop in the console:

body.scrollTop is deprecated in strict mode. Please use documentElement.scrollTop if in strict mode and body.scrollTop only if in quirks mode.