0

HTML5の機能についていくつか質問がありましたがpushState、私が抱えている 2 つの問題については何も見つかりませんでした。私のpopstateハンドラーは次のように定義されています:

$(window).bind('popstate', function (e) {
    if (!e.originalEvent.state)
        return;

    LoadContent({ url: e.originalEvent.state.path });
}

このLoadContent呼び出しは、ajax を使用してコンテンツ ペインを埋めるだけです。

問題 1:page1自分のサイトをブラウズすることから始めたとします。LoadContentがないので呼び出されませんstate。私の閲覧履歴が次のようになっているとします。

page1 -> (ajax)page2 -> (ajax)page3 -> (back pressed)page2 -> (back pressed)page1

ブラウザの戻るボタンを押して に移動するとpage2、すべて問題ありません。ただし、もう一度押すと、のコンテンツをロードする必要page1がありますe.originalEvent.statenullです。つまり、 LoadContent は呼び出されないため、コンテンツは on と同じままになりpage2ます。page1戻るときに のコンテンツをロードするにはどうすればよいですか?

問題 2:page3からに戻ると想像してくださいpage2。つまり、2 ページ目のコンテンツを ajax 経由でロードします。ここで、もう一度 を参照(つまり、手動で URL をブラウザのアドレス バーに入力) し、page3もう一度[戻る] を押して に移動するとしますpage2。2 ページ目を表示する代わりに、ブラウザーは以前に取得した のコンテンツのajax結果page2のみを表示するため、ページの残りの部分は読み込まれません。これはどのように修正できますか?

助けてくれてありがとう!

4

2 に答える 2

0

あなたの問題1の場合:

最初のページのデータは履歴にプッシュされないため、ページ全体をリロードするか、ajax を介してロードし直す必要があります。または、ページ読み込みイベントを変更して、ajax からデータを読み込み、コンテンツを動的に読み込むことができます。そうすれば、必要な json データを履歴にプッシュする必要があります。

于 2013-08-10T13:00:04.530 に答える
0

問題 2と同じ問題が発生しました。

HTTP ヘッダーを送信して、Web ブラウザーが XHR コンテンツをキャッシュおよび表示しないようにすることができます。History オブジェクト JS を実行するページでこれを行います。

PHP の場合:

header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
于 2016-03-08T10:22:56.303 に答える