Есть ли способ поймать событие кнопки "Назад" в javascript?
есть ли способ ответить на нажатие кнопки "Назад" (или нажатие backspace) в javascript, когда изменяется только хэш местоположения? То есть, когда браузер не взаимодействует с сервером или перезагружает страницу.
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/