2016-10-27 59 views
0

我需要的时候作出滚动试图执行一些功能,但没有实际滚动happenned。例如,当页面滚动到顶部并且用户试图向上滚动,或者当页面滚动到可能的底部并且用户试图向下滚动时。如何捕捉零滚动?

有没有办法赶上那种卷轴?

onscroll事件没有帮助

UPD:随着人们建议,抓住所有滚动尝试的唯一方法是观看会影响滚动位置操作的所有事件。至于我能理解,也都以滚动方式:鼠标滚轮,按下鼠标滚轮,键盘(箭头,数字键盘箭头,空间,网页上/下,HOME,END),触摸。

其实,这让我想问这样一个问题“什么方式来滚动存在吗?”,我应该?

例如,我要赶下来零次滚动尝试(是这样表达的英文正确吗?当一个页面滚动至底部,但用户试图滚动下来,反正是happenned一个滚动的尝试)。我用滚动事件来决定,如果用户滚动至底部,并设置/取消finally_scrolled_to_the_bottom布尔标志。

下一页:

  1. 触摸:如果设置了标志,在触摸监听我应检查方向,如果方向是“向下”,火我的功能,
  2. 键盘:相同,检查(关键是DownArrow中文/ numdownarrow /空间/ PageDown键/结束& &标志设置),如果是的话 - 火我的功能,
  3. 鼠标滚轮滚动:检查(方向“向下” & &标志设置) ,如果是 - 防火功能,
  4. 鼠标轮压机:???

难道这一切滚动的可能途径?如何处理用鼠标滚轮做的滚动?

+0

您是否需要检测任何可能的滚动方式?或者你只是对鼠标轮感兴趣?你是否在意上/下箭头试图滚动? –

+0

@EdmundReed,是的,这是关键:捕捉所有滚动企图,不管方式 - 鼠标,键盘等。 – lucifer63

回答

1

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

我要赶下来零次滚动尝试

我不认为你真的可以。我可以想象的一个好的解决方法是防止内容一直向下滚动到底部 - 在onscroll处理程序中,将其重置为至少高于底部1px。用户总是能够向下滚动(并且总是从向下滚动的“尝试”中得到scroll事件),但可能没有注意到剩下1px。

+0

因此,实际上,您的建议是观察可能影响滚动位置的所有操作的事件?) – lucifer63

+0

是的。没有实际的滚动发生,你想要捕捉的是*滚动尝试*。这是没有的事情,所以你可以做的最好的是注意可能触发滚动的动作。 – Bergi

0

window.onwheel作品对我来说:

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

window.onwheel = foo; 

让我在控制台中,甚至当我到达页面顶部的新信息。

正如@bergi指出的,onmousewheel是deprecated,但是onwheel是直接替代品。

+2

请注意'mousewheel'已弃用 – Bergi

+0

@Bergi谢谢,已更新。 – moopet