如何重置每个链接上的sessionStorage除了一个?

时间:2016-08-01 05:10:27

标签: javascript jquery

我遇到使用无限滚动并将用户返回到其先前位置的问题。我存储了用户的滚动位置,并在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

1 个答案:

答案 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');
    }
});