如标题所述,我希望能够在调用pushState
函数时执行不同的onstatechange
事件,而不是back
函数。或者,如果go
函数为正或负。
示例:
如果调用History.pushState()
或History.go(1)
,我希望statechange
事件的回调是forwardPushState
如果调用History.back()
或History.go(-1)
,我希望statechange
事件的回调是backwardsPushState
如标题所述,我希望能够在调用pushState
函数时执行不同的onstatechange
事件,而不是back
函数。或者,如果go
函数为正或负。
示例:
如果调用History.pushState()
或History.go(1)
,我希望statechange
事件的回调是forwardPushState
如果调用History.back()
或History.go(-1)
,我希望statechange
事件的回调是backwardsPushState
back
和go
没有关系。Back
和go
是用来在堆栈中导航的函数。我这样说是因为在你的编辑中,看起来你认为pushState和go(1)是等价的。onstatechange
事件以了解它是否带有存储方向的参数,这不是一项简单的任务。go(-1)
或go(1)
或back
没有关系。pushState
和go(1)
并不相同,这只是一个例子。不幸的是,真的没有关系或链接可以做我正在寻找的事情,所以我必须像@adeneo所说的那样做一些事情。 - Ascherer或許這個對你有用。
<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;
}
};
}
}