Получить текущую позицию прокрутки и передать ее как переменную со ссылкой?

Я буду честен, я здесь совсем не в себе. Я создал систему разбивки на страницы, где вы нажимаете на ссылку, она перезагружает страницу, и определенное количество элементов списка отображается в неупорядоченном списке. При повторном щелчке по нему страница перезагружается, и отображаются другие элементы. Подумайте, как Twitter показывает твиты в вашей ленте.

Проблема в том, что когда он перезагружает страницу, она остается наверху. Я бы хотел, чтобы он переместился на ту же позицию на странице, которая у него была раньше.

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

Вот мой код:

jQuery(document).ready(function(){
    $("a[rel=more]").live("click", function(){
        //script...
    });
});

Куда мне идти дальше?


person Community    schedule 20.06.2009    source источник
comment
Я также работаю над AJAX, чтобы сделать эту работу, но для этого мне нужно иметь возможность читать переменные XSLT с помощью javascript. Вы можете ответить на этот вопрос здесь, если хотите: stackoverflow.com/questions/1022732/   -  person    schedule 21.06.2009


Ответы (4)


  1. Перезагрузите элементы с помощью AJAX вместо перезагрузки всей страницы.

  2. Получите и установите положение прокрутки с помощью window.pageYOffset и window.scrollTo(0, y).

    Я бы сохранил позицию в хэше URL-адреса:

    // after loading the document, scroll to the right position
    // maybe location.hash has to be converted to a number first
    $(document).ready(function() {
        window.scrollTo(0, location.hash);
    });
    
    // I'm not quite sure if reload() does preserve the hash tag.
    location.hash = window.pageYOffset;
    location.reload();
    
person Georg Schölly    schedule 20.06.2009
comment
если этот список находится на прокручиваемом DIV, как я могу заставить полосу прокрутки DIV прокручиваться до нужной позиции? - person ante.sabo; 21.06.2009
comment
@asabo: Я не совсем уверен, но не думаю, что это возможно. Вам нужно будет создать собственный режим прокрутки. (Что не так уж и сложно.) - person Georg Schölly; 22.06.2009
comment
Чтобы кроссбраузерная функция могла получить смещение страницы, попробуйте следующее: howtocreate.co.uk / tutorials / javascript / browserwindow Прокрутите вниз до функции getScrollXY (). - person Shawn Grigson; 02.02.2011
comment
Чтобы иметь более кроссбраузерную функцию и если вы уже используете jQuery, используйте $(window).scrollTop() и $(window).scrollLeft(), чтобы получить текущую прокручиваемую позицию окна. - person Marc; 06.10.2011

Как сказал gs, добавьте элементы через вызов ajax вместо перезагрузки страницы.

Если вы не хотите использовать подключаемый модуль jQuery.ScrollTo. Поддерживает все, что связано с прокруткой, о которой вы могли когда-либо мечтать.

person jitter    schedule 20.06.2009

Я думаю, что вам нужно просто передать привязку HTML в конце вашей ссылки. Браузер автоматически перейдет к элементу рядом с совпавшей привязкой. Пример:

<a href="page2.html#myanchor">Next page</a>

В какой-то момент в середине страницы 2:

<a name="myanchor">My item N</a>
person Edemilson Lima    schedule 12.10.2012

согласно ссылке @Shawn Grigson, pageYOffset не поддерживается одинаково во всех браузерах.

решение jQuery (надеюсь, действительно кроссбраузерное, хотя я еще не тестировал его) для получения и настройки вертикальной прокрутки элемента: scrollTop ().

person ericsoco    schedule 16.06.2011