我遇到使用无限滚动并将用户返回到其先前位置的问题。我存储了用户的滚动位置,并在sessionStorage中发布了通过AJAX加载的内容。问题是,如果他点击除页面后链接之外的任何按钮/链接,我想重置此会话。 所以我有这个
$("a").on( "click", function(e) {
e.preventDefault();
$(".refresh").attr("is-refresh", "false");
//If user doesn't click on a post link we will reset storage to its default.
if($(this).hasClass('post-page')) {
sessionStorage.setItem("scroll_position", $(window).scrollTop());
window.location = $(this).attr('href');
} else {
sessionStorage.removeItem("posts_to_append");
sessionStorage.removeItem("pagination_to_append");
window.location = $(this).attr('href');
}
});
问题是,如果用户点击刷新页面按钮,这没有任何帮助。我一直在思考,不能提出一个简单的解决方案。
如果它有帮助,我的要点就是完成无限滚动的代码,包括保持用户的位置。我只需要通过刷新按钮识别页面刷新。 https://gist.github.com/itzikbenh/5cc5fb05b393a1516af70bc0fde3fa18
答案 0 :(得分:0)
您缺少的是$(function () {})
和sessionStorage.removeItem
。
在这里,试试这个。
$(function () {
// code inside this function will execute on every page refresh afer the DOM is ready
clearScrollPosition();
$('a').on('click', function(e) {
if ($(this).hasClass('post-page') == false)
clearScrollPosition();
});
function clearScrollPosition() {
// clear a session storage item
sessionStorage.removeItem('scroll_position');
}
});