$ (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.