HTML5 History API требует двойных обратных кликов

Я пытаюсь реализовать нумерацию страниц с помощью ajax и API истории HTML5. Позвольте мне описать последовательность событий, чтобы объяснить мою проблему.

У меня есть следующие 4 страницы пагинации.

1 - 2 - 3 - 4

Вот последовательность вещей, которые происходят.

  • Открыть страницу
  • Нажмите "2" // Все хорошо
  • Нажмите "3" // Все хорошо
  • Нажмите "4" // Все хорошо
  • Нажмите кнопку "Назад" браузера Chrome // Перейдите на страницу 3, все хорошо **- Нажмите кнопку "Назад" браузера Chrome // Оставайтесь на странице 3.
  • Быстро дважды нажмите кнопку назад // Перейти на страницу 2**

Я не могу понять, почему двойной щелчок назад дает желаемый результат, но 1 обратный щелчок не работает. Вот мой код упрощен.

function fetch(val) {
  var page = val;

  // Ajax Request Code

  success: function (data) {
     // Some processing code
     window.history.pushState(page, '', '/mydata/page-num-' + page);

  },

  // Other Ajax Request Code

}

window.onpopstate = function(event) {
    fetch(parseInt(event.state))
};

Значение, переданное моей функции извлечения, является целым числом. Любая помощь будет оценена. Спасибо!

1 ответ

Я исправил свою проблему.

Проблема, возникающая из 4 -> 3, заключалась в том, что вызов функции fetch из onpopstate не должен вызывать pushState. Двойной щелчок работал по той причине, что onopopstate выполнялся дважды, прежде чем pushState мог перезаписать.

Другие вопросы по тегам