单击后退按钮时,如何返回上一个状态

时间:2016-09-16 09:32:34

标签: javascript history pushstate

我正在使用history.pushState更改包含ajax请求的网页内容。

并且非常肯定在history.pushState之后,在浏览器中禁用了前进按钮,所以肯定任何点击的按钮都是后退按钮。

所以我想在pushState之前回到页面的主要状态。我使用ajax请求来检索主状态的内容,但问题是如何让浏览器中的url返回主url。由于某些问题,我不想使用pushState方法

在ajax成功之后,我将一个值增加1,以便知道我有多远pushState。

var mainState;
var pushed = false;
$('a').click(function(){
    $.ajax({
        url: "/path/to/content",
        success: function(data){
            $('div').html(data);
            history.pushState('state', 'title', 'url');
            mainState ++;
            pushed = true;
        }
    })
})

window.onpopstate(function(){
    if(pushed){  //knowing fully well that the forward button is disabled
        // take it back to the main state
        history.go(-mainState);
    }
})

假设mainState为3,我单击后退按钮而不是转到mainState,它将我带到mainState - 3.

请有人知道我可以这样做吗?

1 个答案:

答案 0 :(得分:0)

var mainState = 3;
-mainState; //-3
--mainState; //2 

您的代码应如下所示

window.onpopstate(function(){
    if(pushed){
        history.go(--mainState); //FIXED
    }
})