Отслеживать, когда пользователь нажимает кнопку в браузере

Можно ли обнаружить, когда пользователь нажимает кнопку «Назад» браузера?

У меня есть приложение Ajax, и если я могу обнаружить, когда пользователь нажимает кнопку «Назад», я могу отобразить соответствующие данные назад

Любое решение с использованием PHP, JavaScript предпочтительнее. Ад решение на любом языке прекрасно, просто нужно что-то, что я могу перевести на PHP / JavaScript

Изменить: Вырезать и вставить снизу:

Вау, все отличные ответы. Я бы хотел использовать Yahoo, но я уже использую библиотеки Prototype и Scriptaculous и не хочу добавлять больше библиотек ajax. Но он использует iFrames, который дает мне хороший указатель на мой собственный код.

Существует несколько способов сделать это, хотя некоторые из них будут работать только в определенных браузерах. Тот, который я знаю с самого начала, заключается в том, чтобы вставить на страницу крошечный невидимый iframe. Когда пользователь нажимает кнопку «Назад», iframe перемещается назад, что вы можете обнаружить, а затем обновить свою страницу. Вот еще одно решение.

Вы также можете захотеть просмотреть источник, похожий на gmail, и посмотреть, как они это делают.

Вот библиотека для того, что вы ищете, кстати

Одна из моих любимых фреймворков для этого – менеджер истории браузера Yahoo ! . Вы регистрируете события и переадресовываете их, когда пользователь возвращает Назад в это состояние. И если вы хотите узнать, как это работает, вот забавная запись в блоге о решениях Yahoo! при проектировании.

Невозможно сказать, когда пользователь нажимает кнопку «Назад» нажимает клавишу «назад», чтобы вернуться в браузер, однако есть и другие события, которые происходят в определенном порядке, которые можно обнаружить. В этом примере javascript имеет достаточно хороший метод для обнаружения обратных команд:

Однако традиционный способ – отслеживать движение пользователей через ваш сайт с помощью файлов cookie или ссылок. Когда пользователь перейдет на страницу A, а затем на страницу B, снова появится на странице A (особенно, когда нет ссылки на B на A), тогда вы знаете, что они вернулись – A может обнаружить это и перенаправить или иначе.

Библиотека пользовательского интерфейса Yahoo, моя личная любимая клиентская JS-библиотека, имеет отличный менеджер истории браузеров, который делает именно то, о чем вы просите.

Инструментарий dojo имеет функциональность, чтобы справиться с этим в javascript. Я не думаю, что есть хороший способ справиться с этим в чистом PHP.

Вот страница документов, которые у них есть: http://dojotoolkit.org/book/dojo-book-0-9/part-3-programmatic-dijit-and-dojo/back-button-undo

Я установил переменную $wasPosted в $_SESSION со значением false .

Все мои сообщения идут через один и тот же php-файл и устанавливают значение $wasPosted true .

$wasPosted запросами header(location:) предшествует установка $wasPosted в true .

Если $wasPosted является false тогда страница была загружена после использования кнопок назад или вперед.

Самый простой способ проверить, вернулись ли вы к кешированной версии вашей страницы, которую нужно обновить, – добавить скрытый элемент ввода, который будет кэшироваться, и вы можете проверить, имеет ли он по умолчанию значение по умолчанию.

Просто поместите следующее в свой тег тела. Я помещаю его прямо перед тегом конца.

 <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>