Как определить, нажал ли пользователь кнопку "Назад"

Когда пользователь переходит в history-back-1... как я могу это обнаружить? И тогда, предупредите "пользователь нажал назад!"

Использование связываний (и желательно jQuery)

Ответы

Ответ 1

Обычно вы не можете (ограничение безопасности браузера). Вы можете узнать, перемещается ли пользователь от страницы (onbeforeunload, onunload fire), но вы не можете сказать, куда они пошли, если вы не настроили свою страницу, чтобы разрешить это.

HTML5 представляет API истории HTML5; в соответствующих браузерах событие onpopstate будет срабатывать, если пользователь перейдет на более раннюю "страницу" на вашем сайте.

Ответ 2

попробовать:

window.onbeforeunload = function (evt) {
  var message = 'Are you sure you want to leave?';
  if (typeof evt == 'undefined') {
    evt = window.event;
  }
  if (evt) {
    evt.returnValue = message;
  }
  return message;
}

Ответ 3

window.onpopstate=function()
{
  alert("Back/Forward clicked!");
}

Ответ 4

Ниже приведены шаги по обнаружению кнопки "Назад".

  • Зарегистрируйте событие mouse down на теле $('body').on('mousedown' ,'on all li' );

    2. Теперь установите переменную, когда происходит событие mousedown.

    3.Проверьте эту переменную, когда ваше местоположение изменится.

Плюс переменная chages к true, это означает, что list cliked other backbutton

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

Ответ 5

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

Этот метод включает в себя добавление невидимой рамки iframed pageA на главную страницу, переход iframe pageA к странице pageB следующей страницы, поэтому он создает запись в истории браузера. Это происходит в следующий раз, когда пользователь нажимает кнопку возврата назад, он возвращается к странице A вместо реального предыдущего страница главной страницы.

Таким образом, в pageA вы можете добавить несколько js, чтобы обнаружить, что он был открыт дважды, а затем запустить событие, уведомить главную страницу о том, что пользователь, скорее всего, нажал кнопку назад.

Пример: https://normanzb.github.io/sample-backward-detection/page1.htm

Исходный код: https://github.com/normanzb/sample-backward-detection/settings

Протестировано с:

Chrome: версия 74.0.3729.131 - работает

Firefox: 67.0 (64-разрядная версия) работает, когда инспектор ЗАКРЫТ. когда инспектор открыт, Firefox как-то ведет себя иначе... не удивительно, почему разработчики обычно любят Chrome лучше...

Сафари: это не работает, но кого это волнует.

Ответ 6

На странице, на которую вы смотрите, вы можете добавить этот фрагмент кода в событие onLoad, чтобы переместить их обратно на страницу, на которой они были.

if(history.length>0)history.go(+1)

Если вы хотите получить предупреждение, сделайте это

if(history.length>0)alert("the user clicked back!")