2011-10-21 11 views
2

ブラウザの戻るボタンに問題があります。 IEとGoogle Chromeに問題があります。 私は検索エンジンのオートロード機構を作成しています。メカニズムはGoogle検索のように機能します。ブラウザのキャッシュと履歴の戻るボタン(ハッシュ、history.js)

建物の手順:JSON
5を使用してJSON
4)建物の結果リストとして
1)
2キーワードを入力)AJAX検索要求
3)応答)容器

にリストを追加結果をビルドして別のページにリダイレクトし、その結果のページに戻った場合、結果は消えてしまいます。私は、ハッシュ、history.jsなどの開発者によって記述された多くのソリューションを試してみましたが、すべてが機能していません。

+0

正確に何を試してみたか(コードスニペット以上、実例があります)、そしてそれが失敗した正確な方法について詳しく説明してください。それ以外の場合は、あなたに有用な答えを与えることは難しいです。 – Nickolay

答えて

0

戻ると、ページの元のHTMLがキャッシュから読み込まれます。 Javascriptで追加したものはすべて保存されないため、ページの読み込み時にその変更を復元する必要があります。

このため、popstateイベントを使用できます。それが解雇された場合でも、情報を復元する必要があります。 AJAXリクエストを再実行して結果を処理することで、これを行うことができます。したがって、同じ要求を再度実行できるように、十分な情報をURL(またはハッシュ)に保存する必要があります。

これは、以前のリクエストが必要な場合もあることを意味します。たとえば、リストの項目Xを取得するためにajaxリクエストを実行すると、Xがリクエスト後に毎回インクリメントするため(各クリックで次の項目を取得できるように)、すべての項目を再度ロードする必要があります。そうしないと、キャッシュされたページの元のアイテムとAJAXされた最新のアイテムのみが取得されますが、その間のアイテムは失われます。

ただし、pushStateまたはreplaceStateを使用して状態を保存する場合は、追加のデータを保存することもできます。これを使用してJSON結果を状態とともに保存することができますので、追加のリクエストは必要ありません。とにかく、これは最適化であり、厳密には必要ではないので、AJAXリクエストの実装をpopstateで開始する必要があります。とにかく、データは必ずしも状態とともに格納されるとは限りませんので、常にAJAXリクエストがフォールバックとして必要になります。

+0

最新のブラウザにはあまり関係ない、クールなアドバイスがありますが(第2段落から)、OPは問題を抱えています... – Nickolay

+0

@GolezTroll:正確ではない、http:// stackoverflowを見てください。 com/questions/1195440/ajax-back-button-and-dom-updates –

関連する問題