javascript - .scroll() 多久触发一次?

标签 javascript jquery html scroll setinterval

我在这里建立我的网站:argit.bounde.co.uk

我知道使用 $(window).scroll(); 是不好的,因为这会导致某些浏览器出现问题,并且已阅读 at this blog post关于它可能导致的问题。

我有一个函数 navCheck,它由两部分组成,修复导航(如果你调整浏览器的大小使其变窄,你会看到第二个)和选择哪个导航应该占据“over”状态。

我对 jQuery 很陌生,无法实现 John 的方法,它不喜欢我放置变量的位置。所以我想我会在我的 navCheck 函数中包含一个 setInterval 来控制它触发的次数。但是我不能让左侧导航固定功能的间隔大于 1 毫秒,否则会有明显的跳跃。

我想知道默认情况下 .scroll() 触发的频率以及追求的最佳选择是什么。我是否应该将函数的固定部分移动到一个单独的函数并每 1 毫秒触发一次,然后保留函数的“结束”部分并每 250 毫秒触发一次?或者只是让所有东西每 1 毫秒触发一次?甚至比标准 .scroll() 的性能更高

或者同样,如果您能帮助我实现 John 的解决方案,这也是向前迈出的一步,因为那应该会更好,但我不明白我将如何实现它。

最佳答案

你真的不需要计数。答案是“很多”,并且特定于实现。

您的目标应该是使用滚动设置状态,然后使用 setTimeout 在循环中检查该状态。

如果您的函数精简,在 scroll|resize|mousemove|etc 内部,没有什么可以阻止您使用它们。

但是当我说“精益”时,我的意思是

window.onscroll = function (e) {
    screen_obj.x = ...;
    screen_obj.y = ... ;
};

在那之外进行投票。将其设置为 60fps,或任何你喜欢的。
郑重声明,一些浏览器实际上不会给您 1 毫秒,它们只会给您最小的时间间隔。

关于javascript - .scroll() 多久触发一次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15901598/

相关文章:

javascript - 如何在 dc.js 上创建一个具有多个维度的组

javascript - 无法使与 javascript 长度相关的正则表达式起作用

javascript - 如何在浏览器调整到小于 800px 时隐藏 div

html - 为什么我的 XPath 不基于 text() 进行选择?

javascript - 如何在 html 中选择没有任何 "div"在 css 中的元素?

html - 使用 MVVM 在 WPF 中显示 HTML

javascript - 如何过滤对象的所有属性?

Jquery $ ('.class' )[0].css 返回未定义,编辑单个类元素

javascript - 选择除 Summernote div 内的元素之外的所有输入

javascript - 如何使用 javascript 删除元素但不删除其内容?