ユーザーがブラウザの戻るボタンを押したタイミングを追跡する
-
09-06-2019 - |
質問
ユーザーがブラウザの「戻る」ボタンをクリックしたことを検出することはできますか?
Ajax アプリケーションを持っており、ユーザーが戻るボタンをクリックしたことを検出できれば、適切なデータを表示できます。
PHP、JavaScript を使用したソリューションが望ましいです。どの言語のソリューションでも問題ありませんが、PHP/JavaScript に翻訳できるものが必要なだけです
編集:以下を切り取って貼り付けます。
うわー、どれも素晴らしい答えですね。Yahoo を使用したいのですが、すでに Prototype ライブラリと Scriptaculous ライブラリを使用しているため、これ以上 ajax ライブラリを追加したくありません。しかし、それは使用します iFrame これは、独自のコードを書くための良い指針を与えてくれます。
他のヒント
これを行うための私のお気に入りのフレームワークの 1 つは、 Yahoo! のブラウザ履歴マネージャー. 。イベントを登録すると、ユーザーがその状態に戻ったときにコールバックされます。それがどのように機能するかを知りたい場合は、 Yahoo! の決定に関する楽しいブログ エントリは次のとおりです。作った それを設計するとき。
ユーザーがいつ「戻る」ボタンをクリックしたか、またはバックスペース キーを押してブラウザに戻ったかを知る方法はありませんが、特定の順序で発生する検出可能なイベントは他にもあります。これ JavaScriptの例 バックコマンドを検出するためのかなり優れた方法があります。
ただし、従来の方法では、Cookie またはリファラー ページを使用してサイト内のユーザーの移動を追跡します。ユーザーがページ A に移動し、次にページ B に移動し、再びページ A に表示されると (特に B に A へのリンクがない場合)、ユーザーが戻ったことがわかります。A はこれを検出して、ユーザーをリダイレクトするか、その他の方法で切り替えることができます。
私の個人的なお気に入りのクライアント側 JS ライブラリである Yahoo ユーザー インターフェイス ライブラリには、優れた機能があります。 ブラウザ履歴マネージャー それはまさにあなたが求めていることを行います。
ページのキャッシュされたバージョンに戻ったかどうかを確認する最も簡単な方法は、キャッシュされる非表示の入力要素を追加することです。これにより、その要素がまだデフォルト値を保持しているかどうかを確認できます。
body タグ内に以下を配置するだけです。私は終了タグの直前に配置します。
<input type="hidden" id="needs-refresh" value="no">
<script>
onload=function(){
var e = document.getElementById("needs-refresh");
if (e.value === "yes")
location.reload();
e.value = "yes";
}
</script>
変数を設定しました $wasPosted
で $_SESSION
価値のあるもの false
.
私の投稿はすべて同じ php ファイルを経由し、 $wasPosted
に true
.
全て header(location:)
リクエストの前に設定が行われます $wasPosted
に true
.
もし $wasPosted
は false
その後、「戻る」または「進む」ボタンを使用した後にページが読み込まれました。
Dojo ツールキットには、JavaScript でこれに対処する機能があります。純粋な PHP でこれを処理する良い方法はないと思います。
彼らが持っているドキュメントページは次のとおりです。 http://dojotoolkit.org/book/dojo-book-0-9/part-3-programmatic-dijit-and-dojo/back-button-undo