Как проверить, было ли названо событие кнопки назад?

StackOverflow https://stackoverflow.com//questions/12664126

  •  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;
});
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top