Есть ли способ поймать событие кнопки "Назад" в javascript?


есть ли способ ответить на нажатие кнопки "Назад" (или нажатие backspace) в javascript, когда изменяется только хэш местоположения? То есть, когда браузер не взаимодействует с сервером или перезагружает страницу.

6 52

6 ответов:

использовать hashchange событие:

window.addEventListener("hashchange", function(e) {
  // ...
})

Если вам нужно поддерживать старые браузеры, проверьте hashChange раздел События в HTML5-Кросс-браузере Modernizr заполняет вики-страницу.

Я создал решение который может быть полезен для некоторых людей. Просто включите код на своей странице, и вы можете написать свою собственную функцию, которая будет вызвана при нажатии кнопки "Назад".

я протестировал в IE, FF, Chrome и Safari, и все они работают. Решение, которое у меня есть, работает на основе iframes без необходимости постоянного опроса, в IE и FF, однако из-за ограничений в других браузерах хэш местоположения используется в Safari.

Я сделал забавный хак, чтобы решить эту проблему к моему удовлетворению. У меня есть сайт AJAX, который динамически загружает контент, а затем изменяет окно.местоположение.хэш, и у меня был код для запуска на $(документ).ready () для разбора хэша и загрузки соответствующего раздела. Дело в том, что я был совершенно доволен своим разделом загрузки кода для навигации, но хотел добавить способ перехвата браузера назад и вперед кнопки, которые меняют расположение окна, но не мешают моей текущей странице загрузка подпрограмм, где я манипулирую окном.расположение и опрос окна.о расположении через равные промежутки времени не могло быть и речи.

в итоге я создал объект как таковой:

var pageload = {
    ignorehashchange: false,
    loadUrl: function(){
        if (pageload.ignorehashchange == false){
            //code to parse window.location.hash and load content
        };
    }
};

затем я добавил строку в скрипт моего сайта, чтобы запустить

проверить история.js. Существует html 5 statechange событие, и вы можете слушать его.

вы на это смотрели? http://developer.yahoo.com/yui/history/

onLocationChange также может быть полезно. Не уверен, что это Mozilla-единственная вещь, хотя, кажется, что это может быть.