用户autoscrolling正在阻止chrome中的Javascript回调

用户autoscrolling正在阻止chrome中的Javascript回调,javascript,jquery,Javascript,Jquery,当在chrome浏览器上通过自动滚动(鼠标中键并在网页上拖动)进行滚动时,在用户释放按钮之前,似乎不会发生回调 我试图通过AJAX请求延迟加载表行,这会阻止表填充 这只发生在chrome上,在firefox中似乎可以正常工作 为什么会发生这种情况?是否有解决办法 例如: let canFireRequest = true; $(window).on("scroll", function () { if (canFireRequest) { const scrollHei

当在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);
        }
    }
});
让canFireRequest=true;
$(窗口)。打开(“滚动”,函数(){
如果(请求){
常量滚动高度=$(文档).height();
常量scrollPosition=$(窗口).height()+$(窗口).scrollTop();

如果((scrollHeight-scrollPosition)/scrollHeight这是chrome中最近引入的一个bug,因为输入调度优化,希望在今年晚些时候能够修复。请参阅此处的bug报告:


您将回调附加到哪些事件?@f-CJ例如,我在滚动回调中的某个位置调用setTimeout,执行达到此值,但setTimeout的回调直到释放按钮才执行。(我将编辑问题以显示示例)它也不仅仅是setTimeout,jQuery的getJson的回调也会等待MMB Up。getJson实际上会发送网络请求,所以它不会占用主循环,它只是来自它的回调被阻止。我可能会尝试用intersection observer API实现它,看看它是否工作得更顺利。