如今,History.js是否比HTML5的window.history
提供了任何实质性的优势?我们对支持/回退HTML4 hashbang网址不感兴趣。
History.js doesn't support anchors in pushState()
,而window.history
。我们需要这个功能,所以如果没有很大的理由在HTML5-only模式下使用History.js而不是原生window.history
,我们宁愿选择后者。
答案 0 :(得分:3)
是的 - 在他们的网站上他们说:
为所有HTML5浏览器提供交叉兼容的体验(他们都实现HTML5>历史API有点不同导致不同的行为,有时会出现错误 - > History.js修复此问题,确保体验符合预期/相同/伟大的整个> HTML5浏览器)
这些差异很小,谷歌搜索还不足以找到它们 - 我不得不查看源代码 - 似乎主要是在Safari中修复HTML5功能。 safari实现有两个问题 - 一个是history.back无法返回到由location.hash设置的哈希状态,后来由history.replaceState替换。
第二种是当繁忙的safari无法应用状态更改时。
相关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。