适用于 iPhone/iPad 的 javascript scroll 事件?

2022-08-30 05:28:20

我似乎无法在iPad上捕获滚动事件。这些都不起作用,我做错了什么?

window.onscroll=myFunction;

document.onscroll=myFunction;

window.attachEvent("scroll",myFunction,false);

document.attachEvent("scroll",myFunction,false);

它们甚至可以在Windows上的Safari 3上工作。具有讽刺意味的是,如果您不介意破坏现有事件,则PC上的每个浏览器都支持。但是没有去iPad。window.onload=


答案 1

iPhoneOS确实可以捕获事件,除了不是您期望的方式。onscroll

在用户停止平移之前,单指平移不会生成任何事件—当页面停止移动和重绘时会生成一个事件—如图 6-1 所示。onscroll

同样,只有在停止滚动后,才使用 2 根手指滚动。onscroll

安装处理程序的常用方法例如

window.addEventListener('scroll', function() { alert("Scrolled"); });
// or
$(window).scroll(function() { alert("Scrolled"); });
// or
window.onscroll = function() { alert("Scrolled"); };
// etc 

(另请参见 https://developer.apple.com/library/content/documentation/AppleApplications/Reference/SafariWebContent/HandlingEvents/HandlingEvents.html)


答案 2

对于 iOS,您需要使用 touchmove 事件以及滚动事件,如下所示:

document.addEventListener("touchmove", ScrollStart, false);
document.addEventListener("scroll", Scroll, false);

function ScrollStart() {
    //start of scroll event for iOS
}

function Scroll() {
    //end of scroll event for iOS
    //and
    //start/end of scroll event for other browsers
}