【问题标题】:browser back button is not updating page浏览器后退按钮未更新页面
【发布时间】:2011-07-26 03:49:59
【问题描述】:

我在带有 jquery 点击事件的井号之后设置 URL。 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 没有被浏览器的后退按钮调用。

知道我错过了什么吗?

【问题讨论】:

    标签: php jquery


    【解决方案1】:

    您可以编写如下代码:

    var _hash = ''; 函数 myHashChangeCallback(hash) { // 处理哈希变化 // 使用 ajax 等加载一些页面 } 函数 hashCheck() { var hash = window.location.hash; 如果(哈希!= _hash){ _hash = 哈希; myHashChangeCallback(哈希); } } setInterval(hashCheck, 100);

    【讨论】:

    • 这是否适用于较旧的 IE 浏览器。我用 IE 9 进行测试,效果很好。
    • 这个方法可能适用于所有浏览器,它只是每 100 毫秒检查一次 url 哈希是否有任何变化,它非常简单且浏览器通用,而且它不使用任何像 jQuery 这样的库来排序工作。
    【解决方案2】:

    使用窗口的 onhashchange 事件,检查哈希是否改变。当您点击浏览器的返回按钮时,它会被调用。

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

    【讨论】:

    • 这在 chrome 和 FF 中效果很好,但在 IE 中不会调用该函数。知道为什么吗?谢谢!
    • 我在 stackoverflow 上发现了一个关于您的新问题的类似问题:onhashchange with IE 9
    • 我注意到的一件事是,对于 Chrome 和 FF,当使用浏览器的后退按钮时,哈希标签会被删除。使用 IE,主题标签仍然是这样的:localhost/menu.php?home#
    【解决方案3】:

    旧版本的 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();
            }
        }
    }
    

    【讨论】:

    • 我实际上不记得哪些版本的 IE 支持它,哪些不支持它,所以你可能需要为
    猜你喜欢
    • 1970-01-01
    • 2013-07-19
    • 2012-03-02
    • 2018-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-04
    • 2013-03-02
    相关资源
    最近更新 更多