javascript将事件处理程序绑定到水平滚动

iha*_*ake 11 javascript jquery event-handling

有没有一种方法在javascript中将事件处理程序绑定到水平滚动,而不是在用户水平和垂直滚动时触发的通用滚动事件?我想只在用户水平滚动时才触发事件.

我四处寻找这个问题的答案,但似乎找不到任何东西.

谢谢!

PS如果我错误地使用了某些术语,我很抱歉.我对javascript很新.

UPDATE

非常感谢您的所有答案!总之,看起来你们都说javascript中不支持这个,但是我可以用这样的东西来完成这个功能(使用jQuery)(jsFiddle):

var oldScrollTop = $(window).scrollTop();

$(window).bind('scroll', function () {
    if (oldScrollTop == $(window).scrollTop())
        //scrolled horizontally
    else {
        //scrolled vertically
        oldScrollTop = $(window).scrollTop();
    }
});?
Run Code Online (Sandbox Code Playgroud)

这就是我需要知道的全部内容.再次感谢!

Geu*_*uis 7

从我的手机回答,所以目前无法提供代码.

您需要做的是订阅滚动事件.垂直/水平没有特定的一个.

接下来,您需要获得有关当前显示区域的一些测量值.您需要测量window.clientHeight和window.clientWidth.

接下来,获取window.top和window.left.这将告诉您视口的位置,即如果它大于0则使用滚动条.

从这里获得你需要的东西是非常简单的数学.如果没有其他人在接下来的几个小时内提供了代码示例,我会尝试这样做.

编辑:更多信息.

您必须捕获滚动事件.您还需要在某处存储初始window.top和window.left属性.每当滚动事件发生时,请进行简单检查以查看当前的顶部/左侧值是否与存储值不同.

此时,如果其中任何一个不同,您可以触发自己的自定义事件以指示垂直或水平滚动.如果您使用的是jQuery,这非常简单.如果你在没有图书馆帮助的情况下编写js,那么它也很容易,但更多一些.

在js中进行一些事件调度搜索.

然后,您可以编写要订阅自定义事件的任何其他代码,而无需将它们与方法调用绑定在一起.

  • 现在,这是奉献精神. (10认同)