为什么不推荐使用body.scrollTop?

Him*_*u P 36 javascript scrolltop strict-mode

似乎body.scrollTop(和body.scrollLeft)在ES5严格模式下被弃用.这是什么原因,因为在其他DOMElements 上使用这些属性似乎仍然可以吗?

背景资料:

我有一个函数,试图增加(或减少,如指定)的scrollTop所有祖先的值element,直到其中一个实际更改.我想知道,为了保持对严格模式的投诉,我应该特别检查body元素,因为父母的链向上移动.

[显然,bodydocument.body]

sam*_*sam 42

这是Chrome自己不正确的行为,已被弃用,他们警告作者不要再依赖它了.

所述滚动视口由下式表示document.documentElement(<html>)中的标准模式或<body>在特殊模式.(Quirks模式模拟Navigator 4和Explorer 5的文档呈现.)

Chrome用于body.scrollTop两种模式下表示视口的滚动位置,这是错误的.听起来他们想解决这个问题,所以他们鼓励作者为标准行为编写脚本.

我认为您不需要更改代码.body.scrollTop在标准模式下使用没有任何问题,只要您了解它body仅表示滚动位置(通常0,除非您已经给出body了滚动框).

您可以通过document.body.scrollTop在控制台中执行来查看警告:

body.scrollTop在严格模式下已弃用.请documentElement.scrollTop在严格模式下使用,并且body.scrollTop仅在quirks模式下使用.


Adr*_*ian 9

我注意到我的代码停止使用较新版本的Chrome.我用它来修复它window.scrollY

之前:

var scrollTop = document.body.scrollTop;
Run Code Online (Sandbox Code Playgroud)

现在:

var scrollTop = window.scrollY;
Run Code Online (Sandbox Code Playgroud)

它现在一直有效.您可以在此处找到更多文档.

另外,我正在使用:

document.body.scrollTop = 0;
Run Code Online (Sandbox Code Playgroud)

现在我用以下代替:

window.scrollTo(0, 0);
Run Code Online (Sandbox Code Playgroud)