2016-08-01 54 views
0

我在使用無限滾動並將用戶返回到以前的位置時遇到了問題。我正在存儲用戶的滾動位置,並將通過AJAX加載的內容發佈到sessionStorage中。問題是,如果他點擊除頁面鏈接之外的任何按鈕/鏈接,我想重置此會話。 所以我有這個如何重置每個鏈接點擊以外的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

+0

你是什麼意思的「刷新頁面按鈕」? – guest271314

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