移动Safari垂直滚动 - 如何在Javascript中检测窗口停止移动?

3

有没有一种JS方法可以检测长页面在iOS Safari上进行垂直滑动时停止移动的时间,就像伪代码中的等效方法:

window.element.momentumScroll == false

这是为了检测减速内容是否仍在移动或滚动事件是否已完成。

非常感谢任何线索。

附加说明:我没有在我的代码中实现任何外部库(没有jQuery等),需要找到一个本地js监听器/方法来告诉我何时滑动结束。

doc.addeventlistener("scroll", function(e){setvariable to 1}, false)

doc.addeventlistener("noscroll", function(e){setvariable to 0}, false)
3个回答

3

方法:

startTop = window.pageYOffset on touchStart

currTop = window.pageYOffset on touchEnd
deltaTop = startTop - currTop
deltaTop == 0 means no momentum scrolling occurred during another event.

1

我不确定我是否正确理解了问题。我认为您正在尝试实现类似于在页面到达底部时加载新内容的功能?(请原谅我这样假设)

如果您的事件基于触摸,则我认为您正在寻找一些JavaScript手势库。

这里有一些Mootools库:

Powertools: http://cpojer.net/PowerTools/#!

Drag.Flick: http://mootools.net/forge/p/drag_flick

其他框架中应该也有相同的实现。(jQuery: http://jgestures.codeplex.com/

可能的解决方案是查找一个可以返回超过document.body.clientHeight的触摸当前位置的事件(阅读:不跨平台)。

希望我能指出正确的方向。


我现在可能有更好的理解了。你是在寻找当“滑动”停止滚动时是否要找到一个监听器吗?如果是这样,请看一下Drag.Flick演示中的onMoveEnd()函数。 - undefined
请参考上面的附注——我希望这样更清楚了。谢谢。 - undefined
明白了。不过,我认为并没有这样的事件(滚动),大多数情况下是通过这些库来实现,并计算事件的持续时间/方向来模拟触摸。给出的链接的目的是为了学习他们如何实现触摸操作。你会找到答案的。祝你好运。;) - undefined
谢谢Ikmal - 我现在正在使用一种方法来监视touch start和touchend之间的div.style.Top属性 - 如果有移动,我就知道惯性滚动仍然有效... - undefined
我很高兴你找到了解决方案。很乐意帮助。祝你的应用程序好运。 :) - undefined
方法: 开始时的垂直滚动位置(startTop)等于 touchStart 事件触发时的 window.pageYOffset。 结束时的垂直滚动位置(currTop)等于 touchEnd 事件触发时的 window.pageYOffset。 deltaTop = startTop - currTop 如果 deltaTop 等于 0,表示在另一个事件期间没有出现惯性滚动。 - undefined

0
在touchend事件中,只需使用setTimeout。一旦touchend停止工作,定时器就会触发。在触摸事件期间,计时器会暂停。在iOS上,设置超时将在页面停止滚动且没有动量时触发。
body.addeventlistener("ontouchend", function(e){
    setTimeout(function(){
       alert("done moving")
    },0); 
}, false);

或者

$('body').on('touchend.scroll', function () { 
    setTimeout(function(){
       alert("done moving")
    },0); 
});

请注意,Android会在您松开手指时立即触发事件。定时器似乎不会暂停。


1
这在iOS 15中不起作用(之前不确定)。 - undefined
是的,IOS在滚动时停止超时。我几年前在构建IOS应用程序时发现了这个问题。在与IOS一起工作时,必须有创造力。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接