Управление кнопкой «Назад» с помощью onhashchange или jquery

Мне нужно некоторое руководство о том, как иметь очень простой контроль при использовании кнопки «Назад».

По сути, мне нужно предупредить пользователя, что, нажав кнопку «Назад» на моей странице checkout.asp, они потеряют уже имеющиеся элементы. Мне нужно поручить им использовать вместо этого кнопки навигации.

Я осмотрелся и увидел упоминание о событии onhashchange, но не смог заставить его работать.

Я также попробовал плагин Бена Алмана:

<script type="text/javascript" src="jquery/js/jquery-1.6.2.min.js"></script>
<script type="text/javascript" src="jquery/js/jquery-ui-1.8.16.custom.min.js"></script>
<script type="text/javascript" src="jquery/js/jquery.ba-hashchange.js"></script>

<script language="JavaScript" type="text/JavaScript">
$(function(){
    // Bind the event.
    $(window).hashchange( function(){
    // Alerts every time the hash changes!
    alert( location.hash );
    })
    // Trigger the event (useful on page load).
    $(window).hashchange();
});
</script>

Это только запускает предупреждение (без значения из location.hash) при входе на страницу, но я просто хочу предупредить пользователя, если он уходит. Если они решат остаться, позвольте им нажать кнопку «Отмена», чтобы оставить их на той же странице.

Любая помощь приветствуется.


person Mark_54    schedule 08.02.2012    source источник


Ответы (2)


Использовать:

window.onbeforeunload = function() {
   return confirm("you have unsaved data. ok to exit?")
})
person Diodeus - James MacFarlane    schedule 08.02.2012
comment
Диодей спасибо. Я пробовал это, но опять же он предупреждает только при входе на страницу, а не при выходе. Просто чтобы быть уверенным - я заключил ваш код в $(function(){..code..}), который я полагаю правильным. Кроме того, не будет ли это срабатывать, даже когда пользователь нажимает одну из кнопок навигации? - person Mark_54; 09.02.2012
comment
Диоды. Это хорошо работает. Однако он по-прежнему оставляет меня с проблемой, когда он помечает, даже если пользователь использует «правильные» кнопки навигации. Вы знаете, как я могу захватить только кнопку «Назад»? - person Mark_54; 09.02.2012

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

var showWarning = true;

window.onbeforeunload = function() {
  if (showWarning) {
    return confirm("you have unsaved data. ok to exit?");
  }
}

function clearWarning() {
  showWarning = false;
} 

Теперь просто не забудьте вызвать функцию clearWarning() при нажатии разрешенной кнопки. Что-то вроде этого должно работать:

referenceToElement.addEventListener('onClick', clearWarning(), false);

Я не проверял это, но я полагаю, что вам нужно что-то вроде этого.

person nspady    schedule 08.02.2012