如何重置会话存储在除一个链接外的每个链接上单击
How to reset sessionStorage on every link click except one?
我遇到了使用无限滚动并将用户返回到其先前位置的问题。我将用户的滚动位置和通过AJAX加载的帖子内容存储在sessionStorage中。问题是,如果他点击了除帖子页面链接之外的任何按钮/链接,我想重置这个会话。所以我有这个
$("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
您缺少的是$(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');
}
});
相关文章:
- ng视图外的链接重定向到ng视图内的页面
- 单击外部链接后重定向,只打开一个选项卡/窗口
- jQuery UI链接选择菜单.单击按钮时窗体将重置
- 如何在eonasdan Bootstrap 3 Datepicker上重置链接选取器的日期范围
- 重置UIWebView,iOS 5中访问过的链接
- 添加新链接时重置 jQuery“单击时”绑定器
- 单击一定数量的链接后重定向页面
- 使链接计数从1到32,然后重置回1
- 如何防止单击超链接后重定向
- 链接不重定向用户
- ruby on rails中的超链接没有重定向
- 当点击主页链接时重置滚动到顶部
- AngularJS-链接函数中的作用域被重置,我做错了什么
- 如何重置会话存储在除一个链接外的每个链接上单击
- 是否可以使用JavaScript获取客户端上给定链接的重定向链中的所有URL
- html表单没有提交按钮和锚链接onclick重定向与输入值
- ajax 调用另一个 url 重置 JsessionId 因此无法继续处理其他链接
- 防止在点击iframe中的链接后重定向
- Chrome扩展:点击链接后重定向
- 相当于重置按钮的链接