5

据我了解, History.jsHTML5 History/State APIs的 polyfill 。因此,在现代浏览器上,它应该简单地使用popstate来监听 URL 的变化。那么,为什么在最新的 Chrome 上我可以看到计时器每 250 毫秒触发一次?这似乎很浪费,每隔几秒钟就会触发一次垃圾收集器。

查看这个官方History.js 演示

History.js 演示页面每 250 毫秒触发一次计时器

4

1 回答 1

0

我不知道 History.js 代码,但通读它,我相信@apsillers 是正确的。

它被配置为队列项之间的间隔为 250 毫秒。该队列中的一些排队功能需要获取历史状态。这些项目通过将其称为忙来强制刷新暂停。

至于为什么在 HTML5 浏览器中发生这种情况,在我看来,History.JS 不只是切换开关,如果它是 HTML5,然后什么也不做。在他们的github 上,它声明了他们的目标之一是:

为所有 HTML5 浏览器提供交叉兼容的体验(它们都实现了 HTML5 History API 略有不同,导致不同的行为,有时甚至是错误 - History.js 修复了这个问题,确保整个 HTML5 浏览器的体验与预期的一样/相同/很棒)

如果 History.js 仍在做一些涉及排队的工作,我猜他们会使用忙超时。

于 2014-05-03T20:33:54.040 回答