2012-05-22 2 views
0

Я использую плагин jQuery BBQ для моих событий ahax хэширования и состояний истории. Моя проблема заключается в том, что она не сохраняет положение прокрутки, поэтому, когда я использую кнопку «Назад», полоса прокрутки не расположена там, где она была до хэширования, а была той же позицией пикселя, что и до нажатия кнопки «Назад». Я видел, что это проблема для многих, и некоторые упоминают использование файлов cookie, но я понятия не имею, как это сделать с плагином BBQ, поэтому вся помощь приветствуется. В идеале мне бы хотелось, чтобы при навигации по обычной странице прокрутка вверху, но когда нажата кнопка «Назад», прокрутка расположена там, где она была на этой странице. Это мой код:Ajax сохранить позицию прокрутки div до hashchange (плагин BBQ)

$(function(){ 

var cache = { 
    '': $('.content') 
}; 

$(window).bind('hashchange', function(e) { 
    var url = $.param.fragment(); 
    var scroll = $('#wrapper').scrollTop(); 
    $('.contentarea').children(':visible').hide(); 
    if (cache[ url ]) { 
     cache[ url ].show(); 
    } else { 
     $('.content-loading').show(); 
     cache[ url ] = $('<div class="pageURL"/>') 
     .appendTo('.contentarea') 
     .load(url, function(){ 
      $('.content-loading').hide(); 
     }); 
    } 
}) 

$(window).trigger('hashchange'); 

$('#btn-back').click(function(){ 
    parent.history.back(); 
    return false; 
}); 
}); 

Спасибо.

+0

jQuery BBQ не собирается делать это за вас, так как он не передает никаких данных. Что нужно сделать, как это было предложено, использовать куки. Создание и использование файлов cookie удивительно просто; [Я нашел отличную статью, в которой суммируется все, что вам нужно знать] (http://jquery-howto.blogspot.com/2010/09/jquery-cookies-getsetdelete-plugin.html). Вам нужно будет закодировать свой собственный JS, чтобы определить, в какой позиции находится браузер, и как далеко назад в истории. Но вы можете сделать это, добавив ID на страницу и записывая это значение в файл cookie, затем сделав сравнение; если true, scrollTop (cookie_position). Глюк. – Ohgodwhy

ответ

0

Нашел более простой способ решить проблему с желаемыми результатами.

Вместо того, чтобы загружать содержимое прямо в контейнер div, в файле шаблона загружаемой страницы оберните содержимое всей страницы внутри своего собственного контейнера div. Сделайте его шириной и высотой 100%, так что это точный размер, как контейнер div, который загружается в контент, и включите переполнение в новом контейнере div (лучше всего установить переполнение в скрытое в исходном контейнере div).

Выполнение этого, у исходного контейнера div никогда не будет положения прокрутки, но новый контейнер в файле шаблона будет, и это позиция div и прокрутки, которая будет автоматически сохранена в истории браузера вместе со страницей. Теперь, продвигаясь вперед, а затем назад, будет сохраняться положение нового контейнера, и пользователь будет точно там, где они были до левой страницы.

;-)

Смежные вопросы