iScroll页面当前正在滚动检测
iScroll page currently scrolling to detection
我使用以下iScroll 5代码(通常不那么重要:只是一个常见的逐页滚动):
var myScroll = new IScroll('.scroller', {
mouseWheel: true,
scrollbars: true,
keyBindings: {
// doesn't matter
},
preventDefault: false,
fadeScrollbars: true,
snap: 'section', // <-- that's the key
wheelAction: 'scroll',
});
myScroll.on('beforeScrollStart', function (e) {
myScroll.preventDisabling = true;
});
myScroll.on('scrollMove', function (e) {
});
myScroll.on('scrollStart', function (e) {
// !!! I need the detection somewhere here !!!
if (!myScroll.preventDisabling) {
myScroll.disable();
disabledWasCalledInMeanwhile = true;
}
myScroll.preventDisabling = false;
});
var disabledWasCalledInMeanwhile = false;
// that's just to prevent jumping to another page before scrolling is finished
myScroll.on('scrollEnd', function (e) {
disabledWasCalledInMeanwhile = false;
window.setTimeout(function () {
if (!disabledWasCalledInMeanwhile)
myScroll.enable();
}, 250);
$('.labels>*').toggleClass('active', false)
.eq(this.currentPage.pageY).toggleClass('active', true);
});
myScroll.on('scrollCancel', function (e) {
myScroll.enable();
});
那么,是否有机会在beforeScrollStart
或scrollStart
中检测我要滚动到的页面?这对于触发页面项动画很重要。谢谢
我已经使用iScroll很多年了(它是一个优秀的库),但我不知道有什么内置的方法。iScroll快照之前的所有滚动事件(除了scrollEnd)都已确定。不过,只要稍微修改一下图书馆,我相信这是可能的。
首先,进入iScroll.js源代码,找到_nearestSnap方法。在该方法的底部,您会发现所查找的对象已返回。在返回之前,获取该数据并将其传递给自定义事件。不幸的是,iScroll的事件系统不允许您将自定义变量传递给事件,因此您必须进行变通。此外,您还需要跟踪"flick"事件,因为它不会触发_nearestSnap方法。
_nearestSnap方法中的iScroll修改
this.customSnap({
x: x,
y: y,
pageX: i,
pageY: m
});
更新到类实例。注意添加了"customSnap"方法和flick事件。
myScroll = new IScroll('#wrapper', {snap: "p"});
myScroll.customSnap = function(data) {
console.log(data);
};
myScroll.on('flick', function() {
console.log(data.currentPage);
});
这应该可以。不一定是最干净的更新,但在我的测试中,它确实有效。
http://jsfiddle.net/9pa4th4y/
相关文章:
- 检测滚动意图
- 如何检测滚动事件是否像在触摸设备上一样只触发一次
- jQuery:如何检测用户何时再次滚动到顶部
- 当静态元素与滚动上的固定元素位置重叠时进行检测
- 如何使用javascript检测不可滚动元素中的滚动事件和方向
- 如何检测用户何时在主动滚动
- 如何检测用户是否移动了滚动条
- 检测垂直滚动和滚动条宽度,并将宽度更改应用于正文
- 检测可滚动元素内的滚动位置
- HTML5运动检测、抓取和滚动
- 检测触摸向上或向下滚动
- 滚动检测没有'调用新页面Javascript后无法工作
- 滚动后,检测元素何时返回到原始位置
- jquery检测用户何时滚动到列表顶部
- JS中的触摸板滚动检测,没有库
- 不连续滚动-检测用户是否停止滚动
- 如何检测iPhone上滚动页面的比例
- 通过用户滚动量进行检测
- iScroll页面当前正在滚动检测
- Ember JS中的滚动检测