Как захватить событие браузера с помощью JavaScript - PullRequest
2 голосов
/ 10 ноября 2011

Я хочу знать, есть ли способ узнать о событиях браузера ... например: нажать кнопку НАЗАД, кнопку ВПЕРЕД, кнопку ОБНОВИТЬ при помощи javascript.

Ответы [ 3 ]

5 голосов
/ 10 ноября 2011

Эти конкретные события браузера недоступны, так как они могут быть уязвимы для серьезных нарушений конфиденциальности. Конфиденциальность - это то, что поставщики браузеров считают священным и ключевым (общеизвестным) аргументом. Все браузеры позволяют вам знать, когда пользователь заходит на вашу страницу или покидает ее, для чего Камуи указал технические детали.

На одном и том же сайте можно добиться отслеживания событий в браузере с помощью файлов cookie и javascript. Например, отследите, щелкают ли пользователи по гиперссылке, и помечают ее как событие forward, а когда пользователь покидает страницу, не щелкая гиперссылку, это может быть одно из:

  • Ввод URL браузера
  • обратное действие
  • javascript location.href replace

Замена location.href также может отслеживаться, когда вы имеете полный контроль над всем javascript, просто используйте вспомогательный метод с кодом отслеживания вместо непосредственного изменения location.href.

Это оставляет browser url input и back action. С помощью файлов cookie и заголовков запросов (получение реферера) можно приблизиться к обнаружению событий forward и back, хотя и не на 100%, а с практической точки зрения, 99% уверен, что это достаточно хорошо.

Выяснить событие refresh легко с заголовками запросов (реферер), если текущий URL совпадает с реферером, это событие refresh.

Теперь я не предлагаю никакого кода или определенного решения, но я обрисовал в общих чертах, что вы могли бы сделать для отслеживания событий back, forward и refresh в контексте одного домена. Это не будет быстрый и простой способ реализовать его, и, насколько мне известно, в настоящее время не существует платформы, которая надежно отслеживала бы события браузера или даже приближалась к тому, что я описал выше.

Более распространенный / ленивый метод для достижения чего-то похожего - создание приложения single page, для которого доступно множество платформ. Просто Google single page app framework, но это довольно сложное решение с другими последствиями, которые я не буду сейчас вдаваться.

1 голос
/ 10 ноября 2011

Как говорит @sarfraz, вы не можете фиксировать нажатия кнопок «назад» и «вперед», но вы можете вызвать

 window.onbeforeunload = function(){alert("you just tried to leave the page");};

, который должен срабатывать при нажатии кнопок «назад» / «вперед» / «обновить» для выполнения действия, к сожалению,Вы не можете сказать, идут ли они назад или вперед.Обратите внимание, не предупреждайте сообщение, которое действительно раздражает при попытке выйти из страницы.

РЕДАКТИРОВАТЬ вы также можете сделать это в jQuery, если у вас есть

 $(window).unload( function () { alert("Bye now!"); } );
1 голос
/ 10 ноября 2011

Вы не можете захватывать (например, запускать некоторый фрагмент кода, когда пользователь нажимает кнопку Назад), однако вы можете направлять свои страницы в историю, используя:

Подробнее об объекте JS History.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...