12

loadAJAX(jQueryメソッド)を介してページをロードし、メソッドを介してURLをブラウザーバーにプッシュするときに、戻るボタンの機能を保持したいと思いますhistory.pushState。この問題は、ブラウザの戻るボタンを1回クリックし、最初のクリックで前のURLのみが復元され、前のページが読み込まれない場合に発生します。

これまでの私のコードは次のとおりです。

$(function(){
  var profile_url= "/profile";
   $('#click_button').click(function(){
      $('#main_content').load(profile_url);
      history.pushState({profile:profile_info}, "profile", profile_url);
   });
});

私の質問は#main_content、戻るボタンの最初のクリックで前のページのAJAXロードをdivに実行する方法はありますか?

任意のヘルプ/アドバイスをいただければ幸いです。

4

3 に答える 3

13

この質問をすることに最終的に興味を持ったことを実現するPJAXと呼ばれるjQueryプラグインに全員を誘導したいと思います。Pjax()は、jQuery AJAXとpushStateを組み合わせて、ページの読み込みとブラウザー履歴の保持を行います。

これがコードで、これが実際の動作の素晴らしいデモですpjax()

デモでは、機能のデモンストレーションに役立つチェックボックスをクリックすることを忘れないでくださいpjax()

于 2011-11-06T14:01:44.403 に答える
11

このためには、「popstate」イベントをサブスクライブする必要があります。

popstateイベントは、セッション履歴エントリに移動するときに発生する場合があります。 HTML5仕様

あなたはこのようにこれを行うことができます:

window.onpopstate = function() {
  $('#main_content').load(location.href)
};
于 2011-10-14T12:32:55.207 に答える
1

popstateこの目的でイベントを使用できます。詳細については、 https://developer.mozilla.org/en/DOM/window.onpopstateを参照してください。

また、ラッパーを提供し、ブラウザーが履歴APIをサポートしていない場合にURLハッシュタグにフォールバックできるHistory.jsもご覧ください。

于 2011-10-14T12:31:28.493 に答える