Заголовок history.pushState не поддерживается, какая хорошая альтернатива?

Второй параметр History.pushState и History.replaceState может использоваться для установки "заголовка" записи истории.

Это означает, что когда пользователь нажимает на странице 1 на страницу 8, это то, что он должен увидеть в своей истории:

enter image description here

И он работает над Safari и Opera.

Но в Chrome и FireFox это то, что видит пользователь:

enter image description here

Попытка изменить document.title не работает, поскольку он изменяет все записи в заголовке истории:

enter image description here

Какое лучшее решение этой проблемы?

Мы вынуждены использовать только один заголовок истории для всех страниц, реализованных с помощью pushState и replaceState?

Ответ 1

History.js изящно поддерживает API-интерфейсы истории/состояния HTML5 (pushState, replaceState, onPopState) во всех браузерах.

Взгляните на демо здесь

Пример использования:

History.pushState({state:1}, "State 1", "?state=1"); // logs {state:1}, "State 1", "?state=1"
History.pushState({state:2}, "State 2", "?state=2"); // logs {state:2}, "State 2", "?state=2"
History.replaceState({state:3}, "State 3", "?state=3"); // logs {state:3}, "State 3", "?state=3"
History.pushState(null, null, "?state=4"); // logs {}, '', "?state=4"
History.back(); // logs {state:3}, "State 3", "?state=3"
History.back(); // logs {state:1}, "State 1", "?state=1"
History.back(); // logs {}, "Home Page", "?"
History.go(2); // logs {state:3}, "State 3", "?state=3"

Ответ 2

У меня была такая же проблема, и, похоже, вы ошибаетесь.

Если History.js действительно поддерживает его, вы тоже можете. Посмотрев исходный код, кажется, что история JS делает это следующим образом:

https://github.com/browserstate/history.js/blob/master/scripts/uncompressed/history.js#L1293

try {
    document.getElementsByTagName('title')[0].innerHTML = title.replace('<','&lt;').replace('>','&gt;').replace(' & ',' &amp; ');
}
catch ( Exception ) { }
document.title = title;

Я тестировал, и он отлично работает для меня с Chrome: он не "переписывает" целые истории. Однако кажется, что возвращение назад или вперед может привести к перезагрузке страницы, которая в конечном итоге может повторно инициализировать этот заголовок.