如何捕捉零滚动?

时间:2016-10-27 13:14:55

标签: javascript

我需要在尝试滚动时执行某些功能,但不会发生实际滚动。例如,当页面滚动到顶部并且用户尝试向上滚动时,或者当页面滚动到可能的底部并且用户尝试向下滚动时。

有没有办法捕捉那种卷轴?

onscroll 事件没有帮助

UPD:正如人们所说,捕捉所有滚动尝试的唯一方法是观察可能影响滚动位置的动作中的所有事件。据我所知,有滚动的所有方法:鼠标滚轮,按下鼠标滚轮,键盘(箭头,小键盘箭头,空格,页面向上/向下,家庭,结束),触摸。

实际上,这让我想问另一个问题,比如“滚动存在什么方法?”,我应该吗?

例如,我想要记下零滚动尝试(这个表达式在英语中是否正确?当页面滚动到底部但用户试图向下滚动时会发生滚动尝试)。我使用滚动事件来决定用户是否滚动到底部并设置/取消设置 finally_scrolled_to_the_bottom 布尔标志。

下一步:

  1. 触摸:如果设置了标志,则在触摸侦听器中我应该检查方向,如果方向是“向下”,则触发我的功能,
  2. 键盘:相同,检查是否(键是downarrow / numdownarrow / space / pagedown / end&& flag设置),如果是 - 触发我的功能,
  3. 鼠标滚轮:检查是否(方向为'向下'&& flag已设置),如果是 - 消防功能,
  4. 鼠标滚轮按下:???
  5. 这是滚动的所有可能方法吗?如何处理用按下的鼠标滚轮制作的滚动?

2 个答案:

答案 0 :(得分:1)

您可能正在寻找wheel个活动。根据您的设备,也可以通过swipingarrow keys或其他任何方式进行滚动尝试。

  

我想要记下零滚动尝试

我认为你真的不能。我能想象的一个很好的解决方法是阻止内容一直向下滚动到底部 - 在movingItemDiv处理程序中,只需将其重置为至少比底部高1px。用户总是能够向下滚动(并且您总是从向下滚动"尝试")获得movingItemDiv事件,但可能不会注意到剩下1px。

答案 1 :(得分:0)

window.onwheel适合我:

var foo =  function () {
  console.log(new Date());
}

window.onwheel = foo;
即使我到达页面顶部,

也会在控制台中为我提供新信息。

正如@bergi指出的那样,onmousewheel是deprecated,但是onwheel可以直接替代。