我对 Firefox 的scrollTop 值和onscroll 事件有疑问。这在 IE、Safari 和 Chrome 中效果很好,但 Firefox 似乎滞后。
我尝试使用onscroll事件更新一些背景位置,但是当我拿起手柄并快速上下拖动它时,Firefox停止更新scrollTop值,并导致我的应用程序出现一些滞后。
您可以尝试此代码,并在拖动手柄时在 Firefox 控制台中查看,您将看到某些值停止更新:
function SaveScrollLocation () {
console.log(document.documentElement.scrollTop);
}
window.onscroll=SaveScrollLocation ;
知道如何让 Firefox 响应更快吗?
有两种方法可以处理这个问题 -throttle(以设定的时间间隔执行函数)和 debounce(执行函数after自上次调用以来已过了指定时间)。您可能希望在您的情况下使用限制。
简化的解决方案可能看起来像这样(Updated: 参见http://jsfiddle.net/yVVNU/1/):
window.onscroll=catchScroll;
var timeOutId = 0;
var jitterBuffer = 200;
function catchScroll()
{
if (timeOutId) clearTimeout (timeOutId);
timeOutId = setTimeout(function(){SaveScrollLocation()}, jitterBuffer);
}
function SaveScrollLocation () {
console.log(document.documentElement.scrollTop);
alert('scrolled');
}
您还可以使用这个 jQuery 插件:http://benalman.com/projects/jquery-throttle-debounce-plugin/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)