简体   繁体   English

带有拖放的窗口滚动失败

[英]Window Scroll with drag and drop fail

I try to make a infinite scroll but my scroll binding doesn't work perfectly... at all :( 我尝试进行无限滚动,但是滚动绑定无法完美运行……

 var dragStart = function (event) {

        var downPosX = event.pageX;
        var downPosY = event.pageY;
        var oldposScroll = $(window).scrollTop();

        document.body.focus();

        var dragMove = function (event) {
            var movePosX = event.pageX;
            var movePosY = event.pageY;
            var deltaPosX = movePosX - downPosX;
            var deltaPosY = movePosY - downPosY;
            var movetop = oldposScroll + (deltaPosY * -1);

            console.log('[movePosY = ' +movePosY+']  [deltaPosY = ' +deltaPosY+']  [movetop = ' + movetop + '] ');

            $(window).scrollTop(movetop);

            downPosX = movePosX;
            downPosY = movePosY;
            oldposScroll = movetop;
        };

        var dragStop = function (event) {
            $(window).unbind('mousemove', dragMove).unbind('mouseup', dragStop);
        };

        $(window).mousemove(dragMove).mouseup(dragStop);

        event.preventDefault();
    };


$(window).on("scroll", function (event) {
            console.log('rendering');
        });

$viewport.mousedown(dragStart);

So I want to drag and drop my viewport (div) in order to scroll the document. 因此,我想拖放视口(div)以滚动文档。 That's works but I have some crazy result when I print the delta value : 这是可行的,但是当我打印delta值时,我得到了一些疯狂的结果:

[movePosY = 552] [deltaPosY = 8] [movetop = 440]
infini...port.js (ligne 33)
[movePosY = 543] [deltaPosY = -9] [movetop = 449]
infini...port.js (ligne 33)
[movePosY = 551] [deltaPosY = 8] [movetop = 441]
infini...port.js (ligne 33)
[movePosY = 540] [deltaPosY = -11] [movetop = 452]
infini...port.js (ligne 33)
[movePosY = 550] [deltaPosY = 10] [movetop = 442]
infini...port.js (ligne 33)
[movePosY = 539] [deltaPosY = -11] [movetop = 453]
infini...port.js (ligne 33)
[movePosY = 549] [deltaPosY = 10] [movetop = 443] 

As you can see, instead of continuous negatives values, I have positives and negatives values with big gap. 如您所见,我没有连续的负值,而是正值和负值的差距很大。

I don't understand why... I suspect the window object to be too slow to bind "scroll" Event while mouseMove Event is already fire... but I don't know how resolve this bug... 我不明白为什么...我怀疑window对象太慢,无法在mouseMove事件已启动时绑定“滚动”事件...但我不知道该如何解决此错误...

(Before that I have a overflow on my viewport with a scrollBar and I didn't have this bug. That's why I suspect the window Object) (在此之前,我的滚动条在视口中溢出,并且没有此错误。这就是为什么我怀疑Window Object的原因)

我发现了问题:)只需使用clientX / Y(参考窗口)而不是pageX / Y(参考文档的顶部/左侧)。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM