2016-05-06 4 views
9

Я не знаю, все ли кто-то использует Sammy.js, но я нашел, что он отлично подходит для моих потребностей в облегченной библиотеке маршрутизации и шаблонов. Если у кого есть другие идеи, пожалуйста, дайте мне знать.Кэш Sammy.js и положение прокрутки при возвращении в историю

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

Мой вопрос: есть ли способ заставить Сэмми кэшировать страницу и поддерживать положение прокрутки при возвращении в историю?

Заранее спасибо.

+1

В качестве временного решения я предлагаю, http://stackoverflow.com/a/5651372/2346893 в сочетании с http://stackoverflow.com/a/10115269/2346893, Вы можете также добавить id текущего видимого элемента в историю хэширования при прокрутке страницы, если вы не хотите делать это вручную. –

+0

вы можете использовать localstorage для передачи scrolltop и url в качестве параметров на каждой посещенной странице. –

ответ

5

Вы можете использовать localStorage как альтернативный способ хранения url-scrolltop в качестве пары. Таким образом, браузер запоминает положение srolltop для указанного URL.

var scroltop,url; 
$(window).scroll(function() { 
    scroltop = $(this).scrollTop(); 
    url = window.location.href; 
    clearTimeout($.data(this, 'scrollTimer')); 
    $.data(this, 'scrollTimer', setTimeout(function() { 
    localStorage.setItem(url,scroltop); 
    }, 250)); 
}); 
if(localStorage.getItem(window.location.href)) { 
    url = window.location.href; 
    scroltop = localStorage.getItem(url); 
    $(window).scrollTop(scroltop); 
} 

JSbin example