3つのリンクを使用して、ページを更新せずに、ブラウザーの履歴を更新しながら、ページ全体からコンテンツのフラグメントをロードする、簡略化された完全なHistory.jsの例をまとめることができました。
関連するコードスニペットは次のとおりです-完全な実例はここにありますhttp://jsfiddle.net/PT7qx/show
<a href="/page-header">Page Header</a>
<a href="/login-form">Login Form</a>
<a href="/nothing">Nothing</a>
<script>
var History = window.History;
if (!History.enabled) {
return false;
}
History.Adapter.bind(window, 'statechange', function() {
var State = History.getState();
History.log(State.data, State.title, State.url);
if (State.title == 'Page Header') {
$('#content').load('/user/login/ .pageHeader > *');
}
if (State.title == 'Login Form') {
$('#content').load('/user/login/ #common-form > *');
}
if (State.title == 'Nothing') {
$('#content').empty()
}
});
$('body').on('click', 'a', function(e) {
var urlPath = $(this).attr('href');
var Title = $(this).text();
History.pushState(null, Title, urlPath);
// prevents default click action of <a ...>
return false;
});
<\script>
これが正しい使い方かどうか知りたいのですが。以前のバージョンには、#urlを使用してイベントにバインドする機能がありました。この最新バージョンでイベントをURLにバインドする例は見たことがないので、.on()クリックイベントを使用して履歴を呼び出し、そこでクリックされたリンクを分類しました。
これがこの例でこれを達成するための最良の方法であるかどうかはわかりません。