用户自动滚动阻止Chrome中的Javascript回调

时间:2018-08-09 14:01:09

标签: javascript jquery

在chrome浏览器中通过自动滚动(鼠标中键并拖动网页)滚动时,似乎直到用户释放按钮才发生回调。

我正在尝试通过AJAX请求延迟加载表行,这阻止了表的填充。

这仅在chrome上发生,并且在Firefox中工作正常。

为什么会发生这种情况,并且有解决方法?

例如:

let canFireRequest = true;

$(window).on("scroll", function () {
    if (canFireRequest) {
        const scrollHeight = $(document).height();
        const scrollPosition = $(window).height() + $(window).scrollTop();

        if ((scrollHeight - scrollPosition) / scrollHeight <= 0.15) {

            populateRows(tableView, onLoadBeforePopulate);

            canFireRequest = false;
            setTimeout(function () { //execution reaches this line
                canFireRequest = true; //but this is only called when MMB is released
            }, 50);
        }
    }
});

1 个答案:

答案 0 :(得分:0)

事实证明,这是Chrome中的一个错误,该错误是最近由于输入计划的优化而引入的,希望可以在今年晚些时候得到修复。在此处查看错误报告:

https://bugs.chromium.org/p/chromium/issues/detail?id=874072#c_ts1534324198