Я только что столкнулся с этой проблемой сам, и мне кажется, я понял, почему она не работает.
Документация по этой теме кажется очень расплывчатой. То, что я прочитал, говорит о том, что вы можете ввести пустую строку (или пустой объект) в параметр состояния (как вы сделали в своем примере).
history.pushState("", "info", "/info");
Когда я делаю это (тестирование в Chrome и Firefox), кнопки «назад» и «вперед» работают, в том смысле, что они меняют ссылку в адресной строке браузера. Однако это все, что они делают - страница, связанная с этой ссылкой, не загружается!
Итак, попробуйте это:
history.pushState({state: dummyState}, "info", "/info");
Теперь кнопки «назад» и «вперед», кажется, работают так, как я ожидал. Как будто браузер говорит: «если нет« состояния »для блокировки, то я не буду беспокоиться о загрузке страницы».
Учитывая, что он работает одинаково в Firefox и Chrome, я предполагаю, что это документированная функция. Но если это так, он похоронен глубже, чем я хочу искать.