Javascript 单触式平移后iPad上未触发onscroll事件?

Javascript 单触式平移后iPad上未触发onscroll事件?,javascript,ipad,uiwebview,webkit,Javascript,Ipad,Uiwebview,Webkit,在试图找出UIWebView的滚动位置时,我在HTML中附加了一个监听器,它将调用主应用程序。我附加javascript侦听器,如下所示: window.onscroll = function reportScroll() { var sY = window.pageYOffset; alert('Scroll pos: '+sY); // Would evetually trigger a URL or something } 这一事件似乎只会在OS 3.2(iPad)上的

在试图找出UIWebView的滚动位置时,我在HTML中附加了一个监听器,它将调用主应用程序。我附加javascript侦听器,如下所示:

window.onscroll = function reportScroll() {
    var sY = window.pageYOffset;
    alert('Scroll pos: '+sY);  // Would evetually trigger a URL or something
}

这一事件似乎只会在OS 3.2(iPad)上的轻弹滚动结束时触发,一旦减速结束。然而,这似乎表明它也应该在单指平移结束时触发。我真的需要知道那个锅什么时候也完成

根据Safari的说法,iPhone不会在
窗口
上触发
onscroll
事件,而是在
文档
(以及任何其他元素)上触发。我敢打赌Safari iPad也会做同样的事情。

我在iPhone上也遇到了同样的问题:flick scroll正确地生成onscroll事件,但单指平移不会(我在固定菜单实现中使用了它,在ontouchstart事件后菜单被隐藏,在onscroll事件后恢复)

我通过使用两个并行事件解决了这个问题:onscroll和ontouchend。它们现在都引用相同的事件处理程序(恢复菜单)。由于事件在滚动期间被抑制,如果窗口继续flick滚动,ontouchend事件不会被触发。现在,事件处理可用于flick滚动和平移


我还没有在iPad上测试过,我想知道这个补丁是否也有帮助。

在iOS Safari中,onscroll事件应该只在滚动结束时(减速后)触发一次。如果你只是把手指从屏幕上拿开,可以把它看作是瞬间减速。因此,如果您正在执行“flick scroll”,onscroll事件仍然只在减速的最后触发一次

听起来您还应该监视touchend事件:

$(window).on('touchend', function() {
     // Do something
});

注意:触摸结束事件将为每个离开屏幕的手指触发。

我尝试将该功能附加到document.onscroll,结果似乎相同:在轻弹滚动减速结束时触发事件,但在单指平移后没有事件。不过,谢谢你的建议。不,如果我下面的评论不清楚的话,很抱歉——它基本上没有效果。