2016-08-30 12 views
0

私はサイトで作業しています(元の状態に戻していないため、リワークはおそらく良い言葉です)。なぜブラウザは戻るボタンが最後に表示されたページに向かないのですか?

ユーザーは、現在のイベントの一覧を表示するページに移動します。これは「whats-on」と呼ばれます。

このページのリンクを追加して、その月のフルイベントカレンダーを標準的なカレンダー形式で表示します。このページは「イベントカレンダー」と呼ばれます。ページ上に表示する月と、どのような種類のイベントを表示するかを選択することもできます。

ユーザーは、任意の日付にリストされているイベントをクリックすると、イベントの詳細が表示されたページに移動できます。 (ページは関連するイベントを取得するクエリのイベント詳細です)イベントリストの下のページに戻るボタンを追加しました。このボタンは、今見た月と検索結果を示すカレンダーに戻します。問題はありません。PHP $ _SERVER ['HTTP_REFERER']を使用しています。これは完全に動作します。

ここに問題があります。私はそのボタンでback()またはhistory.go(-1)リンクを作成しただけで、ユーザーを "whats-on"に戻します。ブラウザーの戻るボタンをクリックすると、同じことが起こります。それは単に「イベントカレンダー」を完全にスキップします。

これは明らかに、ビジネスリスティングや検索などの他のシナリオではサイト上で発生します。

明らかに私はその動作を望んでいません - 私は戻るボタンを以前のように見たページに移動する必要があります!

私はコードの中でこれを引き起こすとは思えませんが、元のサイト開発者はjQuery UIなどのJQueryパッケージをたくさん含んでいました。デフォルトの戻るボタンの動作を妨害するものがあるかどうか疑問です。それも可能ですか?

私が知りたいことは、バックボタンの動作を変更するJQueryコードがあるため、それを狩り殺すことができるということですね!

どこから探し始めるかについてのアイデアを探しています。

+4

問題のすべてのページに関連するコードがなくてもわかりにくいのは、実際は –

+0

です。 javascriptで 'location.replace(...)'を実行すると、履歴チェーンに新しいエントリを追加せずに現在の場所を上書きします。 –

+0

JSの中に何が起こっているのかもしれないので、決して実際にページを変更することはないので、戻ってくるページは1ページ戻ってきます。 – Asperon

答えて

0

どうやら私はそれが仕事を得ることができる唯一の方法は、カレンダーのページ自体に

history.pushState({}, '', 'event-calendar?<plus whatever query was used to pull the data>'); 

を使用してブラウザの履歴を操作することです。

これは動作するようですが、どのような愚かな回避策ですか。私は元の問題を見つけることができたら幸いです。

+0

カレンダー機能にはプラグインを使用していますか?おそらく_that_はAJAXを使ったり、スクリプトを使って履歴を操作したりするかもしれません。 – CBroe

関連する問題