浏览器后退按钮未更新页面

时间:2011-07-25 19:21:08

标签: php jquery

我正在使用jquery click事件在hashmark之后设置URL。 URL设置正确,但当我使用浏览器后退按钮时,它不会将我带到上一页。

在点击事件之前,网址如下所示:

http://example.com/menu.php?home

我的点击事件如下所示:

$('#visits').click(function() { 
    $('#main').load("visits.php?type=1&view=1", function () { 
        location.href = "#visits";  
    });
    return false;
});

我的网址现在看起来像这样:

http://example.com/menu.php?home#visits

似乎没有使用浏览器后退按钮调用menu.php。

知道我缺少什么吗?

3 个答案:

答案 0 :(得分:1)

使用窗口的onhashchange事件来检查哈希值是否发生了变化。当您点击浏览器的后退按钮时,会调用此方法。

$(window).bind('hashchange',function() {
    if (location.hash != '#visits') {
        //Code to revert the changes on the page
    }
}

答案 1 :(得分:1)

较旧版本的IE不支持hashchange,因此您必须使用setInterval作弊,每秒轮询几次并检查它是否已更改。

if($.browser.msie && $.browser.version < 7){
    setInterval(function(){
        if(window.location.hash != window.lastHash){
            hashChangeHandler();
            window.lastHash = window.location.hash;
        }
    }, 100);
}
else{
    $(window).bind('hashchange',function() {
        if (location.hash != '#visits') {
            hashChangeHandler();
        }
    }
}

答案 2 :(得分:1)

您可以使用以下代码编写代码:

var _hash = '';

function myHashChangeCallback(hash) {
    // handle hash change
    // load some page using ajax, etc
}

function hashCheck() {
    var hash = window.location.hash;
    if (hash != _hash) {
        _hash = hash;
        myHashChangeCallback(hash);
    }
}

setInterval(hashCheck, 100);