Javascript 如何在ajax应用程序中确定浏览器向前或向后

Javascript 如何在ajax应用程序中确定浏览器向前或向后,javascript,browser-history,Javascript,Browser History,我有一个ajax应用程序,它使用散列进行导航,并跟踪应用程序中的导航堆栈。有什么好方法可以确定用户是按浏览器中的“后退”按钮还是只按指向同一url的链接 示例:假设用户位于,然后按下指向的链接。此新设置页面包含指向http//mysite.com/#home的链接。如何确定用户是按链接返回主页,还是按浏览器上的“后退”按钮 因为我在内部跟踪历史堆栈,所以我想知道是否应该推送或弹出堆栈的url 一种解决方案是使用计数器或时间戳毒害url,但最好避免。您可以轻松检查用户是否按下了链接: var li

我有一个ajax应用程序,它使用散列进行导航,并跟踪应用程序中的导航堆栈。有什么好方法可以确定用户是按浏览器中的“后退”按钮还是只按指向同一url的链接

示例:假设用户位于,然后按下指向的链接。此新设置页面包含指向http//mysite.com/#home的链接。如何确定用户是按链接返回主页,还是按浏览器上的“后退”按钮

因为我在内部跟踪历史堆栈,所以我想知道是否应该推送或弹出堆栈的url


一种解决方案是使用计数器或时间戳毒害url,但最好避免。

您可以轻松检查用户是否按下了链接:

var link = document.getElementById("backLink"), pressedBackLink;
link.addEventListener("click", function() {
    pressedBackLink = true;
    // Do stuff here
}, false);

function hashChange() {
    if (pressedBackLink) {
        pressedBackLink = false;
        // Do other stuff
    }
}

记住使用IE的
attachEvent
您可以轻松检查用户是否按下了链接:

var link = document.getElementById("backLink"), pressedBackLink;
link.addEventListener("click", function() {
    pressedBackLink = true;
    // Do stuff here
}, false);

function hashChange() {
    if (pressedBackLink) {
        pressedBackLink = false;
        // Do other stuff
    }
}

记住在IE中使用
attachEvent
忘记hashbang,使用html5。当页面历史记录更改时,事件将被触发。

忘记hashbang,使用html5。当页面历史记录更改时,事件将被触发。

谢谢!从链接中提取事件很容易,我只是想知道,如果用户在浏览器历史记录中向前或向后移动,这是否是一个很好的方法。如果没有,我会找到其他方法来处理我的问题。谢谢!从链接中提取事件很容易,我只是想知道,如果用户在浏览器历史记录中向前或向后移动,这是否是一个很好的方法。如果不是的话,我会找到其他方法来处理我的问题。你能分享更多关于如何准确使用哈希进行导航的详细信息吗?通常,不需要在代码中跟踪历史。实际上,跟踪历史的唯一原因是确定某些过渡动画的方向。这没什么大不了的。你能分享更多关于如何准确使用哈希进行导航的细节吗?通常,不需要在代码中跟踪历史。实际上,跟踪历史的唯一原因是确定某些过渡动画的方向。这没什么大不了的。