我需要一个浏览器页面来维护它在用户导航后发布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更改)而不必重新加载它,但我很高兴能够在用户导航回来时重新加载页面。
我意识到在按下后退按钮后有很多关于重新加载的问题,但没有一个解决方案适用于我的情况。
答案 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就足够了。