我有一个使用jQuery的ajax网站,我想知道如何允许用户刷新页面,并加载适当的内容。
我拥有它,以便当用户点击具有我的网站域的href属性的元素时,该页面的内容将加载到主div中。加载的html内容只是一个完整的html文档,所以我没有加载页面片段。我正在使用History.js来检查URL和hashchanges。但是当我刷新页面时,只加载静态内容(没有样式),而不加载主页面的包含页眉和页脚。另一个问题是我需要清除现有的哈希以避免GET 404错误。我显然希望整个页面正常加载。
到目前为止,这是我的代码:
jQuery(document).ready(function() {
// Prepare
var History = window.History; // Note: We are using a capital H instead of a lower h
if ( !History.enabled ) {
console.log("History is not enabled.");
// History.js is disabled for this browser.
// This is because we can optionally choose to support HTML4 browsers or not.
return false;
}
else {
console.log("History is enabled");
}
//vars for history
var changes = 0;
// Bind to StateChange Event
History.Adapter.bind(window,'statechange',function(){ // Note: We are using statechange instead of popstate
var State = History.getState(); // Note: We are using History.getState() instead of event.state
History.log(State.data, State.title, State.url);
});
$("a").click(function(e) {
e.preventDefault();
$("#content").load(this.href, function() {
// Change our States
changes++;
History.pushState({state:changes}, "State " + changes, "#" + this.href); // logs {state:1}, "State 1", "?state=1"
});
});
答案 0 :(得分:1)
您使用的是 HTML5 吗?您可以使用本地持久性方法来维护通过ajax加载的项目,或者存储任何特定的密钥,在加载时填充所需内容所需的ID,或者刷新页面。
如果没有HTML5,可以选择jQuery.data,但我 不 认为您可以在页面刷新之前捕获/存储持久性项目, 所以这不太可能是一个可行的解决方案 - 所以我能想到的唯一其他选择是使用 cookies (在内存中,通过JavaScript(jQuery)创建) - 作为一个解决方案将是一个噩梦(可能)与许多不同点同步所有状态,以便刷新/重新加载填充正确的东西......但如果设计得好,它可以为你工作。 / p>