1

私は datatables JQuery プラグインを使用しています。AJAX とページネーション (サーバー側) で使用します。各行には、そのレコードの詳細ビューへのリンクが含まれています。そのリンクをクリックしてから戻るボタンをクリックすると、前のページに戻りたいと思います。(注: データテーブル独自の状態保存は使用できません)。

これは、履歴に追加される前に現在の URL に url パラメータを追加できれば実現できます。

これはできますか?純粋な JS または JQuery は実際には問題ではありません。

(注:私はこの種のことを行うのはまったく初めてです。これに # を使用することについて読んだことがありますが、それを行ったことがないので、私の問題に当てはまる例を提供してください)

編集:

JQuery プラグイン bbq の非常に基本的なガイド (http://benalman.com/projects/jquery-bbq-plugin/)

URL に #a=2&b=test のハッシュがあると仮定すると、次の方法で値を取得できます。

//true = optional converts 2 to an integer, false to boolean,...
var a = $.bbq.getState('a',true);

次の方法で値を変更/追加できます。

var hash = "a=3&b=hello";
$.bbq.pushState(hash);

pushState は、バインドされている場合に hashchange イベントを発生させます。イベントをバインドするには doucment.ready 関数に従います。

// called when # part of URL is modified
$(window).bind( 'hashchange', function( event ) {
    var hash = event.fragment; // full hash as string
    var a = event.getState('a', true ); // value for a
    // here do meaningful action like an AJAX request using the hash parameters    
});
4

1 に答える 1

5

はい、HTML5 History APIを使用すると、まさにそれを行うことができます。MDNのブラウザ履歴の操作に関する記事をご覧ください。

現在の URL にパラメーターを追加し、現在の履歴エントリを置き換える例を次に示します。

 var newURL = location.href + (location.search ? "&" : "?") + "myParameter=myValue";
 history.replaceState({}, '', newURL);

History API は HTML5 の機能であり、残念ながらすべてのブラウザでサポートされているわけではありません。ただし、 history.jsという名前のポリフィルがあり、すべてのブラウザーをサポートすると主張しています。

アップデート:

独自の AJAX 履歴実装を展開する代わりに、おそらく既存のソリューションと jQuery プラグインを調べたいと思うでしょう。最適な戻るボタン jQuery プラグインとは?への回答などをご覧ください。質問。

于 2012-02-15T10:35:02.047 に答える