2009-04-17 42 views
5

jQueryに基づいたajaxアプリケーションがあります。 jQuery historyプラグインを使用してブラウザ履歴を有効にしました。しかし、アプリケーションがあまりに多くの履歴を生成したことがわかります。jQueryを使用してブラウザの履歴を削除する

特に、ページを以前のajax状態に戻すためのページ内の「ajax-back」ボタンを提供します。ページ内の「ajax-back」ボタンを押すと、履歴の現在のインデックスを移動したり、最新の履歴レコードを削除したり、新しい履歴レコードを挿入したりするなどして、broswer backボタンのように動作させます。

ですから、は、javascriptから最新のブラウザレコードを削除することができますか?またはブラウザ履歴リストの現在のインデックスを変更することは可能ですか?

jQuery履歴プラグインに基づいた例は非常に高く評価されます。

答えて

7

あなたがしようとしていることはおそらく簡単にはできません。新しいURLに行き、現在のページを履歴から削除するwindow.location.replaceがありますが、これはフルページのナビゲーションであり、jQueryの歴史の偽装の方法をほぼ破ってしまいます。

ヒストリスタック内の位置を変更することができます。ヒストリに整数のオフセットをとり、関連するエントリにナビゲートするwindow.history.go()を使用します。それはスタックをまったく修正するものではなく、新しい場所に置くだけです。また、back()とforward()関数もあります。これらの関数は-1と1でそれぞれ呼び出されます。これはおそらくあなたが探しているものですが、スタックを変更することはありませんが、スタック内を移動するだけです。

理想的には、jQuery.historyのように履歴を保持せず、代わりにonhashchange抽象化を提供するjQuery用のプラグインがあり、ライブラリはハッシュ変更に反応します。そうすれば、ブラウザは履歴スタックを担当し、あなたはイヌのajaxian履歴ライブラリの狂った問題に遭遇することはありません。

+1

+1。 Ersatzナビゲーションは使い勝手の悪夢です。実際の戻る/進むボタンを使用してください。 – bobince

2

ブラウザの履歴には、javascriptを使用して非常に制限された方法でアクセスできます(サイトがその情報をスヌーピング/アクセスするのを防ぐため)。短い答え - 私が知る限り、あなたがしようとしていることはjqueryを通して利用できません。

関連する問題