是否有一种js方法可以检测长iOS浏览器页面上的垂直轻弹何时停止移动,例如等效于伪:
window.element.momentumScroll == false
这是为了检测减速内容是否仍在移动或滚动事件是否已完成。
感激地收到任何线索。
ADDENDUM我没有在我的代码中实现任何外部库(没有jQuery等),并且需要找到一个原生的js监听器/方法来告诉我什么时候轻弹滚动结束。
doc.addeventlistener("scroll", function(e){setvariable to 1}, false)
doc.addeventlistener("noscroll", function(e){setvariable to 0}, false)
答案 0 :(得分: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的触摸当前位置的事件(读取:不跨平台)。
希望我能指出正确的方法。
答案 1 :(得分:1)
方法:
startTop = window.pageYOffset on touchStart
currTop = window.pageYOffset on touchEnd
deltaTop = startTop - currTop
deltaTop == 0 means no momentum scrolling occurred during another event.
答案 2 :(得分:0)
只需在touchend事件中执行setTimeout。触摸端停止工作后,将触发超时。在触摸事件期间,计时器会暂停。在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就会立即触发该事件。计时器似乎没有被暂停。