2010-08-06 2 views
3

Мне интересно, есть ли способ обнаружить, когда страница перезагружается после нажатия кнопки «Назад» навигатора в ASP.NET?Как поймать событие при нажатии кнопки «Назад»?

Благодаря

+1

Почему? Что ты пытаешься сделать? – SLaks

+0

Возможно, просто проверьте, что пользователь не нажимает кнопку «Назад», чтобы отправить конфликтующие формы или что-то в этом роде. Вероятно, это связано с проблемой дизайна. –

ответ

5

Unfortunatly, насколько я знаю, там нет отказоустойчивый способ сделать это, так как это зависит primarially от браузера. Некоторые браузеры будут физически перезагружать контент при повторном нажатии, другие будут кэшировать его и просто загружать кеш. Другие будут делать сочетание обоих.

+0

Интересно знать, что браузеры не работают одинаково для кнопки «Назад». По-видимому: Некоторые браузеры будут физически перезагружать контент при нажатии Назад => Internet Explorer. thers будет кэшировать его и просто загрузить кеш => Firefox. –

+0

Приходит и к множеству пользовательских настроек, и как браузеры обрабатывают определенные метатеги. –

+0

Также сводится к тому, сколько хранилищ разрешено для стека истории. FF предоставляет кешированную версию (не то же самое, что и веб-кеш, но копию состояния, когда вы покинули страницу), однако, достаточно много работы в FF (включая другие вкладки и окна), и это состояние сбрасывается, и это должен сделать перезагрузку. –

2

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

Концептуально, это не имеет смысла делать, поскольку вы, вероятно, затем сделаете что-то на основе этого знания, которое изменило бы «историю». Не меняйте историю! :)

Самый распространенный класс проблемы, который я нашел, чтобы заставить вас хотеть сделать это, - это переставление формы, после обратной. Обычно я разрешаю это, включая nonce в форме и отклоняя повторяющиеся nonces. В этих случаях удобны UUID.

Другие случаи имеют другие решения.

Смежные вопросы