Проверьте, нажимает ли пользователь кнопку назад в браузере - PullRequest
4 голосов
/ 21 декабря 2010

Я пытаюсь использовать событие javascript onbeforeunload , чтобы спросить пользователя, хотят ли они выйти со страницы, но я не хочу, чтобы событие запускалось (РЕДАКТИРОВАТЬ: "событие", являющееся всплывающее диалоговое окно с просьбой нажать кнопку «ОК», чтобы покинуть сайт, или кнопку «Отмена», чтобы остаться на текущей странице), если пользователь нажмет кнопку «Назад», поскольку он, скорее всего, останется на моем сайте.

Так есть ли способ узнать, нажал ли пользователь кнопку назад с помощью JavaScript или PHP?

Я получил решение, использующее скрытый iframe, который работает только в IE, но мне нужно что-то, что может работать для Firefox, Chrome и Safari, если это возможно.

РЕДАКТИРОВАТЬ: мое решение IE работает, потому что когда пользователь нажимает кнопку "Назад", iframe отправляется обратно, но родительская страница остается на том же месте. Из этого я могу сказать, что пользователь действительно нажал кнопку «Назад», поэтому я использую history.back () . Этот небольшой взлом не работает ни в одном другом браузере (насколько мне известно), поэтому я ищу кросс-браузерное решение.

tl; dr Я использую window.onbeforeunload , чтобы открыть диалоговое окно с вопросом, хотят ли они покинуть мой сайт или нет. Я не хочу, чтобы это всплывало, когда пользователь нажимает кнопку «Назад». Как я могу узнать, что пользователь нажал кнопку "Назад" в своем браузере?

Спасибо, Rick

Ответы [ 3 ]

7 голосов
/ 21 декабря 2010

Краткий ответ:

номер

Длинный ответ:

Noooooooooooooooooooooooooooo.

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

Люди переходят от страницы к странице не так часто, как в первые дни существования Интернета. Вместо этого они используют Google и социальные сети для поиска интересных страниц и потребляют отдельные отдельные фрагменты информации.

3 голосов
/ 21 декабря 2010

Вы не можете заранее знать, на какую страницу пойдет ваш пользователь, когда он покинет вашу страницу.Вы даже не можете получить URL-адреса в его текущей истории.

Я не вижу решения вашей проблемы и сомневаюсь, что есть один, извините.

0 голосов
/ 23 декабря 2010

Если вы не хотите, чтобы что-то происходило, когда пользователь нажимает кнопку «Назад», вам не обязательно определять, была ли нажата кнопка «Назад».

ВашЦель состоит в том, чтобы определить, кто «скорее всего останется на [вашем] сайте», и создать дополнительный шаг для всех, кто хочет уйти.Вы пытаетесь прервать и отвергнуть ожидания пользователя относительно того, как будет вести себя его браузер.

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

tl; dr: Добавьте слушателей событий ко всему, что не 't кнопку назад и вызовите диалог в функции обратного вызова.Но это разозлит людей.

...