有没有办法告诉什么方向的状态与history.js去?(Is there a way to tell

2019-09-03 04:18发布

就像标题所说,我希望能够执行不同的onstatechange如果事件pushState函数被调用,而不是, back功能。 或者,如果go功能是阴性或阳性。

例:

如果History.pushState()History.go(1)是所谓的,我想statechange事件的回调是forwardPushState

如果History.back()History.go(-1)是所谓的,我想statechange事件的回调是backwardsPushState

Answer 1:

状态是关系到一个页面的一些数据(如用户看到它的浏览器)。 如果用户想在某个页面,这个页面是一样的,或者,如果他是从后按一下按钮或前进按钮点击这里,因为我想。

pushState的堆栈中压入一个新的状态。 它有没有关系backgoBackgo是功能在压入堆栈状态导航结束。 我这样说是因为在你的编辑,它看​​起来像你所想的是pushState的和去(1)是等价的。

也许,如果你想知道从哪个方向,用户就要到了,你应该分析onstatechange事件要知道,如果它需要存储方向的任何参数。 我还是不知道该怎么办。

我认为最主要的是,它与去没有关系(-1)go(1)back



Answer 2:

也许这会为你工作。

<html>
<body onunload="disableBackButton()">
<h1>You should not come back to this page</h1>
</body>
<script>
function disableBackButton()
{
   window.history.forward();
}
setTimeout("disableBackButton()", 0);
</script>
</html>

上面的代码将很难使用后退按钮加载该页面。

第二次尝试

下面的代码是从另一个堆栈溢出截取。

检测早在浏览器中点击按钮

window.onload = function () {
if (typeof history.pushState === "function") {
    history.pushState("jibberish", null, null);
    window.onpopstate = function () {
        history.pushState('newjibberish', null, null);
        // Handle the back (or forward) buttons here
        // Will NOT handle refresh, use onbeforeunload for this.
    };
}
else {
    var ignoreHashChange = true;
    window.onhashchange = function () {
        if (!ignoreHashChange) {
            ignoreHashChange = true;
            window.location.hash = Math.random();
            // Detect and redirect change here
            // Works in older FF and IE9
            // * it does mess with your hash symbol (anchor?) pound sign
            // delimiter on the end of the URL
        }
        else {
            ignoreHashChange = false;   
        }
    };
}

}



文章来源: Is there a way to tell what direction the state is going with history.js?