代码之家  ›  专栏  ›  技术社区  ›  Nikita Fedyashev

JavaScript.hashchange性能。它能带来任何减速吗?

  •  4
  • Nikita Fedyashev  · 技术社区  · 16 年前

    jQuery hashchange event

    我真的很喜欢这个处理浏览器哈希的插件。在某些情况下,它大大简化了js代码。

    我真的很想开始广泛使用它,但我有一个问题要问你。

    相应地,它使用循环并检查哈希锚点是否每50毫秒更改一次。

    2 回复  |  直到 16 年前
        1
  •  5
  •   Nick Craver    16 年前

    每50ms检查一个简单的字符串属性与 一切 非常 非常

    还要记住,50ms检查只适用于没有 window.onhashchange

        2
  •  0
  •   balupton    16 年前

    性能不是问题,现在所有的现代浏览器都在本地支持onhashchange事件,因此不需要间隔检查。

    --更多信息--

    jQuery History Plugin 使用200ms测试 older generation browsers onhashchange 本机事件。如果没有以本机方式实现该事件,则必须通过使用间隔更改来解决它的功能性问题—据我所知,没有其他方法。幸运的是,所有主要浏览器的最新版本现在都在本机上支持onhashchange事件,因此不再需要此检查。

    我们来看看200ms的间隔检查是怎么做的。如果它们在IE6或ie7上,它将检查iframe的状态(在那些浏览器中,需要iframe来模拟后退和前进按钮,而对于其他浏览器,则不需要iframe)。如果他们使用的是另一个旧的浏览器,而不是IE,那么它只能使用 location.getHash() 在检查中(如前所述,没有iframe)。这两种类型的检查都被设计为极快且尽可能地最小化,将必要的开销降到几乎为零。这一切都是关于浏览器实际上愿意让你做什么,并试图尽可能使用最少密集的代码。