Как получить scrollTop страницы сразу после события загрузки страницы? - PullRequest
2 голосов
/ 29 марта 2010

Я знаю, как получить scrollTop страницы, я использую эту простую функцию JS (код скопирован):

function GetScrolledTop() 
{
   //I never work in IE quirkmode, I always use DOCTYPE as 1st line, so I don't need to test for document.body.scrollTop
   return self['pageYOffset'] || document.documentElement.scrollTop; 
}

Это работает, и моя проблема заключается в следующем: я пытался добавить его в событие загрузки страницы

<body onload="alert(GetScrolledTop());">

При загрузке страницы я получаю НОЛЬ (что имеет смысл), но проблема в том, что я получаю НОЛЬ , даже если прокручиваю страницу и затем перезагружаю ее, не касаясь полосы прокрутки.

Похоже, что браузер делает:

  1. загрузка страницы
  2. вызывает мой метод GetScrolledTop () (поэтому, очевидно, показывает ноль)
  3. затем прокручивает страницу туда, где она была раньше.

Знаете ли вы, как получить scolledTop после шага 3? Я имею в виду, как получить scrolledTop ПОСЛЕ того, как браузер прокрутил страницу? (возможно без использования таймера)

Спасибо!

1 Ответ

2 голосов
/ 29 марта 2010

Вероятно, не без использования таймера. Но вы можете использовать таймер с задержкой 0 мс, который будет выполнять функцию, когда поток станет бездействующим, хотя он все еще будет мгновенным:

<body onload="window.setTimeout(function () { alert(GetScrolledTop()); } , 0);">

EDIT - Возможно, стоит упомянуть, что большинство браузеров поддерживают событие onscroll, которое должно срабатывать после прокрутки окна.

...