移动设备上的jQuery实时滚动事件(解决方法)

时间:2013-09-12 00:16:43

标签: javascript jquery ios events scroll

古老的问题: 当用户在移动网站或应用程序(Web视图)上滚动元素时,可以触发滚动事件。

我正在寻找的是当用户在移动设备上滚动我的页面而不是在用户停止时获取它时访问正确的scrollTop()值。

我确定在某个地方有一个解决方法,如果我是正确的,这个限制是由iOS设定的,并且过去几年一直在讨论它。

我已经尝试过实现原生滚动模拟器但是它们似乎都没有按照我想要的方式工作,说实话,如果我真正想要的只是一个持久的scrollTop()而用户正在滚动它似乎有点过分。 / p>

我目前正在考虑在touchStart上启动一个计数器并在touchStop上停止它,但有些事情告诉我,我在浪费时间。

任何帮助人员?

3 个答案:

答案 0 :(得分:93)

使用jQuery:

$('body').bind('touchmove', function(e) { 
    console.log($(this).scrollTop()); // Replace this with your code.
});

当用户滚动时,这应该为您提供一致的scrollTop值流,但要注意,即使用户只是将手指放在屏幕上,它也会触发。

请注意,如果您使用的是jQuery> = 1.7,则首选的绑定方法是 .on()代替我在我的示例中使用的.bind()方法。在那种情况下,我的例子是

$('body').on({
    'touchmove': function(e) { 
        console.log($(this).scrollTop()); // Replace this with your code.
    }
});

来源:https://github.com/dantipa/pull-to-refresh-js/blob/master/jquery.plugin.pullToRefresh.js

答案 1 :(得分:4)

也许你可以看看iScroll_move - 方法中与touchmove事件绑定的方式https://github.com/cubiq/iscroll/blob/master/src/core.js#L152如何做到这一点:{{3}}

这有点复杂,但我相信你会弄清楚的。您也可以使用iScroll开始并绑定到他们的scrollmove事件(我不确定它是如何在iScroll 5上调用的,但它在iScroll 4中是onScrollMove)。 that.y然后会给你正确的值。

答案 2 :(得分:1)

我必须去iScroll路线才能做到这一点。我在这里写了我的实现:https://stackoverflow.com/a/23140322/229315