2014-09-05 2 views
4

Как вызвать событие jquery при нажатии кнопки «Назад назад». Я использую одностраничное приложение в asp.net mvc, и я хочу показать окно подтверждения, чтобы покинуть экран, когда пользователь нажимает кнопку «Назад» браузера. Как я могу вызвать функцию jquery на кнопке назад. Пожалуйста помоги. Я искал и обнаружил событие push state, но я не понял, как его использовать в моем случае, описанном выше.Как вызвать событие при нажатии кнопки «Назад назад»

+0

возможно дубликат [JS или JQuery браузера задней кнопки мыши детектора] (http://stackoverflow.com/questions/17594413/js-or-jquery-browser-back- key-click-detector) – Manwal

+0

Проверьте это http://www.webdevelopmenthelp.net/2013/12/browser-back-button-click-event.html –

+0

Вы можете использовать метод разгрузки jQuery. http://api.jquery.com/unload/ $ (window) .unload (function() { alert («Обработчик для вызова .unload().»); }); –

ответ

1
window.userInteractionTimeout = null; 
window.userInteractionInHTMLArea = false; 
window.onBrowserHistoryButtonClicked = null; // This will be your event handler for browser navigation buttons clicked 

$(document).ready(function() { 
    $(document).mousedown(function() { 
     clearTimeout(window.userInteractionTimeout); 
     window.userInteractionInHTMLArea = true; 
     window.userInteractionTimeout = setTimeout(function() { 
      window.userInteractionInHTMLArea = false; 
     }, 500); 
    }); 

$(document).keydown(function() { 
     clearTimeout(window.userInteractionTimeout); 
     window.userInteractionInHTMLArea = true; 
     window.userInteractionTimeout = setTimeout(function() { 
      window.userInteractionInHTMLArea = false; 
     }, 500); 
    }); 

    if (window.history && window.history.pushState) { 
     $(window).on('popstate', function() { 
      if (!window.userInteractionInHTMLArea) { 
       // alert('Browser Back or Forward button was pressed.'); 
       } 
    if(window.onBrowserHistoryButtonClicked){ 
    window.onBrowserHistoryButtonClicked(); 
      } 
     }); 
    } 
}); 
+1

Отличное решение. Именно то, что я искал. Благодаря тонну. Вы сделали мой день ... –

+1

Это не работает для меня .. и не дает никаких ошибок :( – Simone

7
jQuery(document).ready(function($) { 

    if (window.history && window.history.pushState) { 

    window.history.pushState('forward', null, './#forward'); 

    $(window).on('popstate', function() { 
     alert('Back button was pressed.'); 
    }); 

    } 
}); 

JavaScript or jQuery browser back button click detector

+0

Этот код показывает предупреждение, даже если я перемещаюсь по щелчку метки привязки и в первый раз на загрузке страницы. Я хочу, чтобы он исполнялся только на обратной кнопке браузера. –

+0

проверка window.history здесь, чтобы определить, загрузили ли вы новую страницу. если не window.history имеет значение null, и вы не можете вызвать предупреждающее сообщение. вы, вероятно, имеете ошибку в сценарии js, поэтому проверьте консоль javascript из браузера –

Смежные вопросы