Подтвердить что ты не робот

Почему body.scrollTop не рекомендуется?

Кажется, что body.scrollTopbody.scrollLeft) устарели в строгом режиме ES5. В чем причина этого, учитывая, что по-прежнему кажется целесообразным использовать эти свойства на других DOMElement s?

Справочная информация:

У меня есть функция, которая пытается увеличить (или уменьшить, как указано) значения scrollTop всех предков element, пока одно из них не изменится. Мне интересно, чтобы, чтобы жаловаться на строгий режим, я должен специально проверить элемент body, поскольку цепочка родителей движется вверх.

[Очевидно, body относится к document.body]

4b9b3361

Ответ 1

У Chrome неправильное поведение, которое устарело, и они предупреждают авторов, что они перестают полагаться на него.

scrolling viewport представлен document.documentElement (<html>) в стандартном режиме или <body> в режиме quirks. (Режим Quirks эмулирует рендеринг документа Navigator 4 и Explorer 5.)

Chrome использует body.scrollTop для представления положения прокрутки в окне обоих, что неверно. Похоже, что они хотят исправить это, поэтому они поощряют авторов к script для стандартного поведения.

Я не думаю, что вам нужно изменить свой код. Нет ничего плохого в использовании режима body.scrollTop в стандартном режиме, пока вы понимаете, что это только позиция прокрутки body (обычно 0, если вы не указали body окно прокрутки).

Вы можете увидеть предупреждение, выполнив document.body.scrollTop в консоли:

body.scrollTop устарел в строгом режиме. Используйте documentElement.scrollTop в строгом режиме и body.scrollTop только в режиме quirks.

Ответ 2

scrollTop обозначает, сколько элемента прокручивается. Это означает, что тело не должно иметь scrollTop, потому что оно никогда не прокручивается, тело имеет самую верхнюю полосу прокрутки, поэтому содержимое можно прокручивать, но не само тело.
Последнее изображение на этой странице объясняет многое:
https://developer.mozilla.org/en-US/docs/Web/API/Element.scrollTop