javascript - Firefox scrollTop 问题

标签 javascript firefox scroll scrolltop onscroll

我对 Firefox scrollTop 值和 onscroll 事件有疑问。这在 IE、Safari 和 Chrome 中运行良好,但 Firefox 似乎滞后。

我尝试使用 onscroll 事件更新一些背景位置,但是当我拿起 handle 并快速上下拖动它时,Firefox 停止更新 scrollTop 值,这导致我的应用出现一些延迟。

您可以尝试这段代码,并在拖动 handle 时查看 Firefox 控制台,您将看到某些值停止更新:

function SaveScrollLocation () {
    console.log(document.documentElement.scrollTop);
}

window.onscroll=SaveScrollLocation ;

知道如何让 Firefox 响应更快吗?

最佳答案

有两种方法可以处理此问题 - 节流(以设定的时间间隔执行函数)和去抖(自上次调用后指定时间之后执行函数)。您可能希望在您的情况下使用节流。

简化的解决方案可能看起来像这样(已更新:请参阅 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/

关于javascript - Firefox scrollTop 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5033478/

相关文章:

Javascript:event.which 和 charCodeAt 协同工作

javascript - jquery:如果链接有目标空白,则添加类?

javascript - 点击后阻止页面滚动?

html - CSS/HTML - Firefox 上的填充问题和样式覆盖

html - 里面有文本的水平滚动框

javascript - 将元素插入范围会清除 Chrome 中的选择

css - 通用容器 - CSS水平滚动条问题

javascript - 错误无限滚动Javascript,向上滚动时不加载

wpf - 在 ListView 中滚动时 DataTrigger 未触发

html - chrome 29 和 firefox 23 (ubuntu 12.04) 中不同的边框位置