Как проверить, было ли названо событие кнопки назад?
-
11-12-2019 - |
Вопрос
Я пытаюсь сделать сайт полностью поддерживать Ajax, однако у меня трудно выяснить, как поддержать историю.Я использую http://balphupton.github.com/jquery-history/demo/ Как мою библиотеку изменить хеш с jQuery как таковой:
$(document).on('click','a',function(){
var url = $(this).attr('href');
$.ajax({
// AJAX Call and populate
});
$.History.go(url);
return false;
});
$('input[type="submit"]').livequery('click',function(event){
$(this).closest("form").ajaxForm(get_pages_load_options);
var url = $(this).closest("form").attr('action');
$.History.go(url);
});
$('.get_pages').livequery('change',function(){
$(this).closest("form").ajaxForm(get_pages_load_options);
var url = $(this).closest("form").attr('action');
$.History.go(url);
});
.
Я также использую следующий JavaScript для закладки:
function hash_process() {
url = window.location.hash.replace('#', '');
$.ajax({
//AJAX Call and Populate
});
}
if (window.location.hash) {
hash_process();
}
.
Однако с вышеуказанными двумя фрагментами я обнаруживаю, что кнопка «Назад» не работает, особенно с представленными формами.Если я добавим следующий код, он просто дает мне страницы по умолчанию, которые не имеют никакой представленной информации, как я никогда не подал форму в первую очередь.
window.onhashchange = hash_process;
.
Есть ли способ, которым я могу проверить, названа ли задняя кнопка?Любые идеи будут оценены, спасибо!
Решение
Я нашел ответ на эту загадку.Поскольку второй звонок был вызван после того, как я отправил формы, которые я закончил, просто добавив переменную добавления в смесь следующим образом:
ignore_hash = false;
function hash_process() {
if (ignore_hash == false) {
url = window.location.hash.replace('#', '');
$.ajax({
// AJAX Call & Populate
});
} else {
ignore_hash = false;
}
}
.
В функциях, которые были инициированы до проверки, я добавил эту переменную в выполнение:
$(document).on('click','a',function(){
var url = $(this).attr('href');
$.ajax({
// AJAX Call & Populate
});
$.History.go(url);
ignore_hash = true;
return false;
});
.