滚动发射太多次并撞击铬和歌剧

时间:2015-02-16 21:48:28

标签: javascript jquery

我编写了一个程序,你可以在其中拖动我的自定义滚动条和页面滚动,一切正常,但是在测试时我发现如果页面太大了20000像素并且你做了一个大滚动它会崩溃铬和歌剧。

这是由window.scroll(0,whereto1)引起的;被拖了太多次。当我评论这行代码时,除了拖动时滚动页面的功能外,一切都适用于大卷轴。

enter image description here

以下是相关代码,如果有人对如何做到这一点有任何好主意而不会在大页面上崩溃浏览器让我知道。非常感谢你的时间。

var $dragging = null;
var pageheight1 = $( document ).height();
$(document.body).on("mousemove", function(e) {
    if ($dragging) {
    var wrap = jQuery('.pvs_inner_fixedbar');
        wrapoffset = wrap.offset();
        wrapbottomborder = ( wrapoffset.top + wrap.height() ) - jQuery('.pvs_scroll_marker').height();
        var pos = e.pageY;
        if(pos < wrapoffset.top){
            pos = wrapoffset.top;
        }
        if(pos > wrapbottomborder){
            pos = wrapbottomborder;
        }
        $dragging.offset({
            top: pos
        });
        var ratio1 = pageheight1 / 400;
        var whereto1 = Math.round((pos - wrapoffset.top) * ratio1) - 100;
        window.scroll(0, whereto1); // FIRES TOO MANY TIMES :((((
    }
});


$(document.body).on("mousedown", ".pvs_scroll_marker", function (e) {
    $dragging = $(e.target);
});

$(document.body).on("mouseup", function (e) {
    $dragging = null;
});

1 个答案:

答案 0 :(得分:2)

您可以限制对window.scroll()事件处理程序

调用的mousemove的调用

https://remysharp.com/2010/07/21/throttling-function-calls