History.js против window.history для режима только для HTML5
Предоставляет ли History.js какие-либо существенные преимущества по сравнению с HTML5? window.history
Настоящее время? Мы не заинтересованы в поддержке / возвращении к URL-адресам хэш-бэндов HTML4.
History.js не поддерживает якоря вpushState()
, в то время как window.history
делает. Нам нужна эта функция, поэтому, если нет особых причин использовать History.js вместо нативного window.history
в режиме только HTML5 мы бы предпочли последний вариант.
1 ответ
Да, на своем сайте они говорят:
Обеспечение совместимости для всех браузеров HTML5 (все они реализуют API-интерфейс HTML5 >History несколько по-разному, вызывая различное поведение, а иногда и ошибки - >History.js исправляет это, гарантируя, что опыт будет таким же, как ожидалось / одинаковым / отличным во всем> HTML5 браузеры)
Эти различия невелики, и поиск в Google не был достаточным, чтобы найти их - мне пришлось искать в исходном коде - кажется, что основным является исправление функциональности HTML5 в сафари. Есть две проблемы с реализацией сафари - одна из них заключается в том, что history.back не может вернуться в состояние хеша, установленное location.hash, которое впоследствии заменяется history.replaceState.
Второе - это то, что при занятом сафари не будет применено изменение состояния.
Соответствующий исходный код History.js:
History.bugs = {
/**
* Safari 5 and Safari iOS 4 fail to return to the correct state once a hash is replaced by a `replaceState` call
* https://bugs.webkit.org/show_bug.cgi?id=56249
*/
setHash: Boolean(!History.emulated.pushState && navigator.vendor === 'Apple Computer, Inc.' && /AppleWebKit\/5([0-2]|3[0-3])/.test(navigator.userAgent)),
/**
* Safari 5 and Safari iOS 4 sometimes fail to apply the state change under busy conditions
* https://bugs.webkit.org/show_bug.cgi?id=42940
*/
safariPoll: Boolean(!History.emulated.pushState && navigator.vendor === 'Apple Computer, Inc.' && /AppleWebKit\/5([0-2]|3[0-3])/.test(navigator.userAgent)),
Поэтому я думаю, что ваше решение сводится к тому, заботитесь ли вы о Safari 5 и Safari IOS 4.