私は AJAX 経由でコンテンツを提供するサイトに取り組んでいます。
メニュー内の項目をクリックすると、コンテンツ div が$.get
応答で更新されますが、特別なことは何もありません。
history.pushState
ブラウザの戻る/進むボタンでナビゲーションできるように実装しています。
履歴ナビゲーションにコンテンツを読み込むには、次の操作を行います。
$(function() {
$(window).bind("popstate", function() {
$.getScript(location.href);
});
});
問題は、ページが初めてロードされるときに、この関数$.getScript
によってページがすぐに再度ロードされることです。ページが最初にロードされるときは、最初の HTML ビューがレンダリングされ、2 回目のロードでは JS リクエストであるため、JS ビューがレンダリングされます。
HTML リクエストのあるページでこのイベントが発生しないようにするにはどうすればよいですか?
ベストアンサー1
ネイティブの HTML5 History API を使用すると、いくつかの問題が発生します。HTML5 ブラウザーごとに API の処理方法が少しずつ異なるため、一度コードを記述しただけでは、回避策を実装せずに動作すると期待することはできません。履歴.jsHTML5 History API 用のクロスブラウザ API を提供し、hashchange
そのルートを希望する場合は HTML4 ブラウザ用のオプションのフォールバックも提供します。
ウェブサイトを RIA/Ajax アプリケーションにアップグレードするには、次のコード スニペットを使用できます。https://github.com/browserstate/ajaxify
これは長い記事の一部ですインテリジェントな状態処理ハッシュバン、ハッシュ、HTML5 履歴 API について説明します。
さらにサポートが必要な場合はお知らせください :) よろしくお願いします。