1

Mozilla にはわかりやすいドキュメントhistory.pushStateありhistory.replaceState、戻るボタンが押されてコンテンツが動的に変更されたときにコンテンツを処理する方法が示されていません。

foo.html にフォームがあり、送信時にコンテンツを置き換えるために AJAX 呼び出しを実行すると、pushState は次のようになります。

history.pushState({content:$('#content').html()}, '', 'bar.html');

ユーザーが戻るボタンをクリックすると、URL は foo.html に戻りますが、ページにはフォームが表示されません。どうすればフォームを表示できますか? popState を見てみましたが、正しく動作させることができませんでした。

4

2 に答える 2

1

古いコンテンツを再レンダリングするために必要なすべての状態を保存し、その状態を使用して前のページを に再作成する必要がありますpopstate

Knockout.js (または完全な MVC フレームワーク) などのモデル バインディング手法を使用すると、これがはるかに簡単になります。

于 2013-08-26T02:33:37.487 に答える
1

これは私がそれを解決するために行ったことです:

foo.html が読み込まれると、実行しますhistory.replaceState({container:$(#container').html()},'', window.location);

次に、コンテンツを置き換える ajax 呼び出しの後、これを実行します。history.pushState({container:$(#container').html()},'', 'bar.html');

ページの読み込み時に、popstate をバインドして、イベントに次のようなコンテナーを含む状態オブジェクトがあるかどうかを確認します。

$(window).bind("popstate", function(event) {
    if (event.state != null){
        if ('container' in event.state){
            $(#container').html(event.state.container);
        }
    }
});
于 2013-08-26T02:45:54.333 に答える