次のテスト アプリケーションがあります: http://dev.driz.co.uk/ajax/
リンクをクリックして、jQuery AJAX を使用して他のページに読み込むことができます。コンテンツを別のパネルに読み込むには、globalTabs と localTabs の 2 つのタイプがあります。注: 各ページは実際には完全なページですが、jQuery の find メソッドを使用して必要なコンテンツのみを取得します。
これを強化するために、HTML5 History API (クロスブラウザー用の History.js) を使用しています。
タイトルと URL が正常に変更され、履歴スタックが正常にプッシュされ、戻るボタンと進むボタンを使用すると、URL とタイトルが元に戻ります。
複雑な部分は、以前の状態からコンテンツをロードし直し、グローバルまたはローカルの ajax などの正しいタイプをロードすることです。これを達成するには、データと型の両方をプッシュ状態に渡して、ポップ状態で再利用できるようにする必要があると考えています...
誰かが私を正しい方向に向けるのを手伝ってくれますか? 最初の部分はすべて機能しています。この ajax タイプを pushState に渡し、それを popstate の変更で再利用する場合です。
これを改善するために、次のように書き直して、型とデータを渡すための計画を示します。
注: 大文字の History は、History.js を使用しているためです。
var App = {
init: function() {
$(document).ready(function() {
$('.globalTabs li a').live('click', function (e) {
e.preventDefault();
App.globalLoad( $(this).attr('href') );
});
$('.localTabs li a').live('click', function (e) {
e.preventDefault();
App.localLoad( $(this).attr('href') );
});
});
window.addEventListener('popstate', function(event) {
// Load correct content and call correct ajax request...
});
},
localLoad: function ( url ) {
$.ajax({
url: url,
success: function (responseHtml) {
$('.localContent').html($(responseHtml).find('#localHtml'));
$data = { $(responseHtml).find('#localHtml'), 'local'};
History.pushState($data, $(responseHtml).filter('title').text(), url);
}
});
},
globalLoad: function ( url ) {
$.ajax({
url: url,
success: function (responseHtml) {
$('.mainContent').html($(responseHtml).find('#globalHtml'));
$data = { $(responseHtml).find('#globalHtml'), 'global'};
History.pushState($data, $(responseHtml).filter('title').text(), url);
}
});
}
};
App.init();
更新: この質問を明確にするために、それらは私が助けを求めている 2 つの問題です。
1.) ajax リクエストで動作する戻るボタンと進むボタンを取得して、コンテンツ領域に正しいデータをロードします。
2.)グローバル div リクエストかローカル div リクエストかを認識できるように、pushState メソッドを使用してコンテンツを渡すことにより、コンテンツを正しい領域にロードします。