如何在ajax app中确定浏览器的前进或后退

时间:2012-06-16 10:59:09

标签: javascript browser-history

我有一个使用hashbanging进行导航的ajax应用程序,我在应用程序中跟踪导航堆栈。有没有什么好方法可以确定用户是按下浏览器中的后退按钮,还是仅按下指向同一网址的链接。

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

由于我在内部跟踪历史堆栈,我想知道是否应该推送或弹出堆栈的URL。

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

2 个答案:

答案 0 :(得分:1)

忘记hashbang并使用html5 pushState。当页面历史记录发生变化时,会触发popState事件。

答案 1 :(得分:0)

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

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< 9使用attachEvent。我认为您的链接标识为"backLink",而haschange事件的监听者是函数hashChange

关于后面的浏览器按钮,无法确定它。用户可以在其历史记录中单击前进或任何其他链接,而无需按顺序跟随它们。不要浪费你的时间。