2017-07-09 6 views
1

私は小さなWebアプリケーションを作成していますが、divにajaxを使ってページを読み込んでいます。 AJAX要求の後Javaスクリプトのブラウザ履歴を変更するには

、リンク、AJAXリクエストページとのユーザーのクリックが私のdivとURLを更新するたびに.. 私は私のページを更新しよう、

それが正常に動作してくれ、現在のページを表示するが、私はをクリックしています[戻る]ボタンの上にはトップURLではなく、ページを変更だし、ここ 内容だ私のコード

$.ajax({ 
url: link, 
type:'POST', 
data : name, 
success: function(data) { 
$("#main").html(data); 
    history.pushState({foo:'bar'}, title, link); 
    } 
} 
}); 
+0

'popstate'イベントを処理する必要があります。 – SLaks

+0

はい私はそれを検索しましたが、私は理解できませんでした。ありがとう – Joe

+0

あなたはドキュメントを探しています。 – SLaks

答えて

0

@Slaksがコメントで言うように、あなたがwindow.onpopstateを処理する必要があります。

ドキュメント:

は、文書がpopstateイベントを受信すると、手動でその内容 を更新するかもしれませんが、彼らは前のステップで たものから、文書の内容は変更されませんさかのぼります。

これを行うにはState objectが必要です。これはpushStateコールのパラメータとして渡します。状態オブジェクトは、新しい履歴エントリに関連付けられているjavascriptオブジェクトです。 popstateイベントは、有効な履歴エントリが変更された場合にのみ発生し、コピーState objectのパラメータとして発生します。ドキュメントが言うように は、history.pushState()(およびhistory.replaceState())方法はこれだけの理由で、履歴エントリを追加(および変更):

はpopstateイベントをトリガしませんhistory.pushState()またはhistory.replaceState()を呼び出します。 popstateイベントは、同じドキュメントの2つの履歴エントリ間を移動するときに、戻るボタンをクリックする(JavaScriptでhistory.back()を呼び出す)などのブラウザアクションを実行することによってのみトリガされます。

関連する問題