Хотел добавить, да это ожидаемое поведение History.js.
В то же время есть больше дискуссий , которые критикуют это поведение, поскольку оно не является стандартом W3C и создает некоторую путаницу.
Короче говоря, чтобы ответить на ваш вопрос: в History.js функция pushState()
- это вызов в конце состояния.
Недостатком этого решения является то, что вы можете просто изменить (выдвинуть) свое новое состояние и позволить функции onstatechange () - обработать переход. Недостаток в том, что вы не можете обрабатывать исключения / или должны записывать их в обработчик событий onstatechange.
Лично я предпочитаю способ обработки W3C, так как вы можете различить кнопки назад / вперед и pushState. Сопровождающие History.js работают над решением с внутренним флагом, которое позволяет вам изменить это поведение:
Обратите внимание, как вышеуказанные вызовы [pushstate-звонки] вызывают события смены состояния, если для некоторых
причина, по которой вы не хотите, чтобы это произошло, тогда внутри вашей смены состояний
В обработчике вы можете использовать следующее:
if ( History.getState().internal ) { return; }
* Эта функция в настоящее время находится в разработке и может использоваться только с версией 'dev' для History.js! Надеюсь, что это поможет другим людям в будущем:)