我遇到以下情况的问题。
我已经使用pushState为各种事情加强了网站,结果是一个令人震惊的响应式网络应用程序,但这个问题阻止我使用它。
以下是代码示例:
$('a').live('click', function(){
history.pushState({}, '', this.href);
popstate(this.href);
return false;
});
popstate = function(url){
$('#content').load(url);
}
window.onpopstate = function(event){
popstate(window.location.href);
event.preventDefault();
}
注意:
答案 0 :(得分:19)
似乎有些浏览器经常混淆部分加载的ajax和整个页面,用它的布局装饰。那是因为他们都有相同的URL。 因此,当用户单击后退按钮时,浏览器将不会加载URL,只会显示之前通过ajax下载的部分内容。
为了避免这种情况并维护两个单独的内部缓存(一个用于部分页面,一个用于整个页面),您应该在通过ajax调用时在URL中添加GET参数。在您的代码中像这样:
popstate = function(url){
$('#content').load(url+'?_ajax=1');
}
希望这有帮助。