私は jQuery を使用する ajax サイトを持っていますが、ユーザーがページを更新して適切なコンテンツをロードできるようにする方法を考えています。
ユーザーがウェブサイト ドメインの href 属性を持つ要素をクリックすると、そのページのコンテンツがメイン div に読み込まれるようにしています。ロードされた html コンテンツは html ドキュメント全体であるため、ページのフラグメントはロードしていません。History.js を使用して、URL とハッシュの変更をチェックしています。しかし、ページを更新すると、静的コンテンツのみが読み込まれ (スタイルが解除され)、メインのホームページのヘッダーとフッターは読み込まれません。もう 1 つの問題は、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"
});
});