按下浏览器后退按钮后,使用Jquery重新加载或维护DOM状态

时间:2011-08-29 19:12:58

标签: jquery

我需要一个浏览器页面来维护它在用户导航后发布ajax更改状态并点击后退按钮返回它。不幸的是,先前淡出jQuery的项目是可见的,或者一旦用户点击后退按钮返回页面,动态添加的项目(通过ajax)就会消失。

我尝试了大约20种不同的无缓存元和头解决方案,但似乎没有一款适用于Chrome 13.0.782 for mac。我也试过这里概述的onunload解决方案:Is there a cross-browser onload event when clicking the back button?无济于事。

理想情况下,我希望页面状态保持不变(对DOM的所有jQuery更改)而不必重新加载它,但我很高兴能够在用户导航回来时重新加载页面。

我意识到在按下后退按钮后有很多关于重新加载的问题,但没有一个解决方案适用于我的情况。

3 个答案:

答案 0 :(得分:1)

你需要真正简单的历史:

http://code.google.com/p/reallysimplehistory/

编辑:或者,您可以使用BODY事件存储window.name的innerHTML并将其作为字符串存储在onbeforeunload中。然后设置一个cookie,以便在页面重新加载并检测到cookie时,window.name的值可以回到BODY

答案 1 :(得分:1)

一种常见的做法,例如谷歌使用的做法是将哈希值附加到网址。例如,在你淡出一些div之后你可以做到

window.location.hash = "hide_div"; 

然后你会放一个onHashChange监听器

$(window).bind('hashchange', function() {
    var hash_value = window.location.hash; 

   if ( hash_value === 'hide_div' ) 
        // hide certain divs
});

P.S这是维持ajax状态的非常粗略的模式。

编辑:我建议你也看看HTML5中的History API。

答案 2 :(得分:0)

如果您只想在后台按钮上从服务器获取页面刷新,请使用cache-control'no-store,no-cache,must-revalidate'。

Chrome想要无商店,IE想要重新验证。对于其他浏览器(和w3c),no-cache就足够了。