Можно ли обнаружить, когда пользователь нажимает кнопку «Назад» браузера?
У меня есть приложение 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>