почему кнопка Chrome назад / вперед не запускает событие popstate?

#javascript #jquery #html #google-chrome

#javascript #jquery #HTML #google-chrome

Вопрос:

JavaScript:

 $(document).ready(function() {

window.history.replaceState({some JSON}, "tittle", aHref);

$(window).bind("popstate", function(){
alert("hello~");
});

});
  

Когда www.example.com сначала загружается страница, выполняется описанное выше действие. Затем щелкните ссылку href на этой странице, и будет загружена другая страница. В это время я нажимаю кнопку «Назад» в Chrome, и не появляется предупреждение «привет ~». Но страница, на которую ссылается aHref, загружается.
Почему?

Ответ №1:

Если вы хотите, чтобы кнопки назад / вперед вызывали навигацию, используйте pushState , а не replaceState :

 window.history.pushState({ "some": "object" }, "title", aHref);
  

pushState Метод добавляет запись истории, тогда как replaceState заменяет текущую запись истории.

Комментарии:

1. Извините, я новичок в интерфейсе.

2. «заменить» означает удаление текущей записи и ввод новой записи; «нажать» означает просто ввод новой записи. Это правильно?

3. Если я не нажимаю ни pushState, ни replaceState, добавлена ли новая запись в историю?

4. Да, это верно в отношении replaceState. Я не понимаю, что еще вы спрашиваете. Записи истории добавляются при переходе по обычным URL-адресам или использовании pushState .