2009-07-12 8 views
3

ボタンバック可能な重複を有効にします。
How to: Back button support “Ajax”Ajaxのページング -

私は、ページングやフィルタリングなどのもののためにjQueryを介して、部分的なビューを取得するASP.NET MVCの実装を持っているが。問題は、私はそうすることによってブラウザの戻るボタンを壊すことです。バックボタンの動作を元に戻すにはどうすればいいですか(リフレッシュせずにポンドを使用してURLを書き直しても問題ありません、バックボタンがトリガーされたときにデータを再フェッチする方法はわかりません)

ありがとうございました!

+0

ページングにはJQueryが必要ありません。追加機能を追加していますか? –

+0

これはjQueryに関するものではありません。 AJAX(jQueryなど)を使用してコンテンツを更新するときに、戻るボタンをどのように保持できるかを知る必要があります – Alex

+0

うーん...ここでコマンドパターンを使用できますか? Commandオブジェクトにアクションをカプセル化し、Commandsオブジェクトに保持します。 jQueryでBack and Forwardを処理するときに、前後にナビゲートします。 実装は賢明ではありません。試してみてはいけません:)。 –

答えて

3

ご存じのように、javascriptページングは​​戻るボタンを強制終了します。しかし、それはまた、与えられたページにリンクする能力を殺します。ページの再読み込みを回避するために、戻るボタンを維持するには、URLに#を使用する必要があります。その後、戻るボタン(およびページに直接リンク)を使用することができますが、ページが読み込まれたときにURLを解析して、ページを正しいページに移動する必要があります。

EDIT:

は、URLを取得:

var baseURL = location.href.slice(0, location.href.indexOf('#')); 

は、その後、あなたの新しいリソースをURLに追加します。

location.href = baseURL + '#page2'; 
//you'll probably want to figure out the page number programatically 

しかし、負荷の適切なリソースに行くことを忘れないでください:

$(goToResource); 
function goToResource() { 
    var hashURL = location.href.slice(location.href.indexOf('#')); 
    //you AJAX code to load the resource goes here 
} 

もちろん、あなたのためにすべてこれを行うためのプラグインを見つけることができます。

+0

これの例をjQueryとC#で追加できますか? – Alex

4

jquery.historyプラグインを試してみてください。それはあなたが望むものをうまく達成することができます。

+0

うわー、このプラグインは素晴らしいです! –

1

at this page

に記事をブラウザの履歴のサポートの追加を見てください、これは箱から出してIEのために動作しないことに言及していません。 IEで動作させるには、iframeをページに含める必要があります。

<iframe id="__historyFrame" style="display:none;" ></iframe> 

IE7とFirefoxのみでチェックしました。 Internet Explorerで文書化されていない問題があるため、広範囲のブラウザーで動作するとは確信していません