Сохраняем позицию скрола между страницами

Дата публикации: Январь 27, 2011 - 13:08:45, чт

На скорую руку написал javascript, который сохраняет позицию смещения прокрутки между страницами. Необходимо было реализовать для одного проекта. На скорую руку означает, что я использовал JQuery. Если он не нужен, тогда придется немного переписать скрипт.

  1. // auto scroll to content
  2. $(window).unload(function() {
  3.     var top = scrollTop();
  4.     setCookie('window_scroll_top', top, 1);
  5. })
  6. $(function() {
  7.     var top = getCookie('window_scroll_top');
  8.     if (top)
  9.     {
  10.         window.scrollBy(0, top);
  11.     }
  12. });
  13. function scrollTop() {
  14.     return filterResults (
  15.         window.pageYOffset ? window.pageYOffset : 0,
  16.         document.documentElement ? document.documentElement.scrollTop : 0,
  17.         document.body ? document.body.scrollTop : 0
  18.     );
  19. }
  20. function filterResults(n_win, n_docel, n_body) {
  21.     var n_result = n_win ? n_win : 0;
  22.     if (n_docel && (!n_result || (n_result > n_docel)))
  23.         n_result = n_docel;
  24.     return n_body && (!n_result || (n_result > n_body)) ? n_body : n_result;
  25. }
  26. function setCookie(name, value, days)
  27. {
  28.     var expireDate = new Date();
  29.     expireDate.setDate(expireDate.getDate() + parseInt(days));
  30.     document.cookie = name /span> '=' value /span> '; expires=' expireDate.toGMTString() + '; path=/';
  31. }
  32. function getCookie(name)
  33. {
  34.     var re = new RegExp(name /span> '=[^;]', 'i');
  35.     if (document.cookie.match(re))
  36.     {
  37.         return document.cookie.match(re)[0].split('=')[1];
  38.     }
  39.     return '';
  40. }

Принцип прост. При событии unload на странице происходит запись текущей позиции правого скролла в куки. После загрузки страницу выполняется обратное действие – загрузка и установка позиции из кук.

p. s. Функции scrollTop и filterResults я взял откуда-то из сети.

Теги: javascript кодинг
Просмотров: 643

Что скажете?

Имя:
Код Код с картинки: