10
単純な完全なHistory.jsの例を3つのリンクを使ってまとめて、ページを更新することなく、ブラウザの履歴を更新しながら、フルページからコンテンツの断片を読み込むことができました。ここでこれはHistory.jsを使用する適切な方法ですか?
はreleventコードスニペットはある - 完全な作業例ここ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()クリックイベントを使用してHistoryを呼び出し、クリックされたリンクをソートしました。
これがこの例でこれを達成する最良の方法であるかどうかはわかりません。
のAjaxの負荷が私は少し遅れて相手にだけど、それは 'History.pushState({window.location.pathname()URLパス}は注目に値しますんworking jsfiddle exampleですtitle ")。text()、State.urlPath);' window.location.pathname()は関数ではないので、エラーをスローします。カッコを取り除くだけで魅力的です。 – indextwo
それをキャッチするためにありがとう。私がそれを実際のバージョンから貼り付けていると思って以来、私はそれを見逃していたのか分かりません。 – dansalmo
@dansalmo上記のような例(http://stackoverflow.com/a/13314438/1867808)を実装すると、index.htmlファイルに関連して追加のコンテンツはどこに置かれますか?私はそれをindex.htmlと同じフォルダにあるresponse.htmlに入れますか? –