后退按钮导致哈希更改页面陷阱javascript

时间:2014-03-31 22:26:23

标签: javascript jquery url

我将网页信息存储在URL哈希中,包括页码。为了确保页面不超过我添加此条件的总页数。假设总页数= 10

//get page value from URL 
function getParams(val){
    return decodeURI(
        (RegExp('[#|&]' + val + '=' + '(.+?)(&|$)').exec(location.hash)||[,''])[1]
      );
   }


var totalPages = 10;

   $(window).on('hashchange',function(){
   if(getParams('page') > totalPages){
      window.location = "#page=1";
   } 
}); 

问题是,如果页面从另一个总页数更多的时间加载:

www.website.com#page=11

它重定向到第1页,但是如果用户导航回来,它会立即返回到第11页,然后重定向回到第1页并陷入该周期,使用户无法导航回来。有什么方法可以防止这个问题吗?谢谢阅读。

1 个答案:

答案 0 :(得分:1)

之前我遇到过类似的问题,请使用window.location.replace(url)代替window.location = url;,以便上一页不会保存在会话历史记录中。