Понять (через JavaScript), если текущая страница достигнута, используя историю браузера

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


person tanathos    schedule 22.10.2009    source источник


Ответы (2)


Технически вы не можете прочитать историю браузера пользователя. Это из соображений конфиденциальности. Однако вы можете сделать что-то, чтобы выяснить, был ли пользователь перенаправлен на вашу страницу через реферер страницы. Если это обратная передача, вы можете вывести переменную на стороне сервера.

Получить реферер в javascript довольно просто

var referrer = document.referrer;

Чтобы определить, является ли это обратной передачей (в С#)

var isPostback = <%= IsPostBack %>

С историей немного сложнее. Лучшим способом обойти это было бы немедленное истечение срока действия ваших страниц.

Response.Cache.SetNoServerCaching();
Response.ExpiresAbsolute = DateTime.Now;

Но это относительно свободные решения. Зачем вам такое поведение?

person Bob    schedule 22.10.2009
comment
У меня проблемы с сообщениями, зарегистрированными на стороне сервера (asp.net). Пользователь компилирует форму, отправляет на сервер, сервер выполняет свою работу и регистрирует обратно предупреждение javascript о недопустимых вещах, которые он нашел. Затем, если пользователь вернется к истории и снова перейдет вперед, сообщение появится еще раз. Я думаю, что если я смогу зарегистрировать функцию js для проверки этой ситуации, я смогу обойти предупреждение или нет. Я не знаю, сработает ли ваше решение в моем сценарии, но я попробую :) спасибо - person tanathos; 22.10.2009

Вы можете добавить штамп даты на каждую страницу. Если временная метка слишком далеко, вероятно, пользователь использовал кнопку «Назад». Но это не сработает, если браузер не загружает страницу из кеша.

Подождите, вы также можете добавить временную метку к URL-адресу. Теперь вы сравниваете временную метку страницы с временной меткой URL-адреса реферера.

Я думаю о решении с помощью файлов cookie, но не могу найти его прямо сейчас. Кто то?

person cimnine    schedule 22.10.2009