Мне поручено придумать способ определить, попал ли человек на наш сайт с помощью кнопки «назад» (то есть он покинул наш сайт и вернулся), и выйти из него, если так.
Я придумала некоторые варианты, но мне интересно, какие еще опции мне могут не хватать.
К вашему сведению, у нас есть состояние сеанса, поэтому на стороне сервера мы находимся в течение длительного времени, но им нужна дополнительная проверка на стороне клиента.
вариант 1: установить приготовление через onunload, срок действия которого истекает через x секунд. На каждой странице нашего сайта я проверяю наличие указанных файлов cookie. Если он существует, я предполагаю, что они пришли с другой страницы нашего сайта и ничего не делают. Если его там нет, я предполагаю, что они исчезли с нашего сайта более чем на x секунд и перенаправляют. Против: устройства Blackberry под управлением OS5 не поддерживают загрузку.
вариант 2: то же самое, что и # 1, но вместо того, чтобы устанавливать cookie на загрузку, мы устанавливаем его при каждом нажатии каждой ссылки, переходящей на другую страницу нашего сайта. против: грязный
вариант 3: проверять историю браузера при каждой загрузке каждой страницы нашего сайта. Если предыдущий URL не один из наших, мы выходим из него. Минусы: поддержка браузера? Похоже, объекты предыдущей / следующей истории теперь заблокированы в современных браузерах из-за безопасности.
Вариант 4. Через JS каждые x секунд проверять наличие cookie. Если он есть, сбросьте его до истечения через х секунд. Если его там нет, предположим, что они вернулись откуда-то еще. Против: Не уверен, что JS cookies будут установлены, когда эта страница может быть в фоновом режиме (приложение переключается на iPhone или использует другую вкладку в браузере на рабочем столе).
Любые другие варианты, которые я должен рассмотреть? Есть ли «правильный» способ справиться с этим? Это просто цепляет за соломинку, пытаясь предотвратить нормальное поведение браузера?