$ (window) .scrollTop () vs. $ (document) .scrollTop ()


Відповіді:


149

Вони обидва матимуть однаковий ефект .

Однак, як зазначено в коментарях: $(window).scrollTop()підтримується більше веб-браузерів, ніж $('html').scrollTop().


3
він повертає 0 в IE8 (хоча моя сторінка перебуває в режимі диваків, що може грати фактор)
— Грег Огл

38
$ ('html'). scrollTop () не є крос-браузером (як сеттер, він не працює принаймні в Chrome). Зараз самий кросбровський спосіб зробити це: $ (window) .scrollTop () як геттер, $ ('html, body'). ScrollTop (offset) як сеттер.
— Георгій Іванкін

6
Згідно з цим посиланням , без аргументів scrollTopнікуди не прокручується, а просто повертає поточне місце прокрутки.
— АБО Mapper

3
@ d2burke scrollTop()- це геттер і scrollTop(value)є сеттером . scrollTop()без аргументів не змінює положення прокрутки.

1
@ M98 window.scrollTo (x, y)
— Бодман

36

Спочатку потрібно зрозуміти різницю між windowі document. windowОб'єкт є об'єктом на стороні клієнта верхнього рівня. Над windowоб’єктом нічого немає . JavaScript - це об'єктно-орієнтована мова. Ви починаєте з об'єкта і застосовуєте методи до його властивостей або властивостей його об'єктних груп. Наприклад, documentоб’єкт - це об'єкт windowоб'єкта. Щоб змінити document«S кольору фону, ви встановите document» s bgcolorвласності.

window.document.bgcolor = "red" 

Щоб відповісти на ваше запитання, немає різниці в кінцевому результаті між windowі document scrollTop. Обидва дадуть однаковий вихід.

Перевірте приклад роботи на веб-сайті http://jsfiddle.net/7VRvj/6/

В цілому використання в documentосновному для реєстрації подій і використовувати , windowщоб зробити такі речі , як scroll, scrollTop, і resize.


Немає різниці в кінцевому результаті. Обидва дадуть однаковий вихід.
— Хусейн

Як ні, деякі браузери не підтримують прокручування вікон, оскільки об'єкт вікна може бути не переповненим об'єктом.
— Бодман

11
Який браузер не підтримує вікно, будьте конкретні. Ось приклад jsfiddle.net/7VRvj/4 . Перевірте це у всіх браузерах і дайте мені знати, у якому браузері він не працює.
— Хусейн


0

У мене щойно були деякі подібні проблеми з scrollTopописаними тут.

Врешті-решт я обійшов це на Firefox та IE , використовуючи селектор$('*').scrollTop(0);

Не ідеально, якщо у вас є елементи, які ви не хочете виконувати, але це обходиться між невідповідністю документа, тіла, HTML та вікна. Якщо це допоможе ...


20
Ніколи не слід використовувати * таким чином (насправді уникайте * взагалі *). Замість націлювання на один елемент ви впливаєте на весь DOM. Величезний хіт виступу. Селектори повинні бути максимально точними.
— Влад

2
Я особисто завжди використовував $("html,body").scrollTop(val)- ніколи не мав жодних проблем
— Рой,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.