【发布时间】:2012-06-21 20:41:30
【问题描述】:
我正在使用 history.JS(最新)和 Jquery(最新)来加载和替换网站的一部分,这一切正常,目前我只是想让它在现代浏览器中工作,所以我' m 不摆弄哈希更改。
似乎一切正常,但是当我单击浏览器(最新的 FF 和 Chrome)上的后退按钮时,页面并没有改变(尽管 url 和标题确实改变了)。我用谷歌搜索了一下这里,但我看不到发生了什么。
查看堆栈溢出时,我发现了这个页面:Restoring content when clicking back button with History.js 这似乎在问一个类似的问题。我已经将#left_col(被替换的div)的加载内容添加到状态数据中,但我不确定从那里去哪里,我知道当状态改变时我需要重新加载该数据,但我不知道怎么做。
var History = window.History;
var origTitle = document.title;
if ( !History.enabled ) {
return false;
}
History.Adapter.bind(window,'statechange',function(){
var State = History.getState();
History.log(State.data, State.title, State.url);
});
$('.ajaxload').live("click", function() {
History.pushState({state:1,leftcol:$('#left_col').html()}, origTitle, $(this).attr("href"));
$('#left_col').load($(this).attr("rel"));
return false;
});
非常感谢任何帮助!
更新:
我设法让页面在用户单击返回时更改,但它没有加载正确的状态(它似乎返回两种状态而不是一种),我添加到上述代码中的代码是:
window.addEventListener('popstate', function(event) {
var State = History.getState();
$('#left_col').html(State.data.leftcol);
});
【问题讨论】:
标签: javascript jquery history.js