Javascript:detect OS X“;“自然卷轴”;设置

Javascript:detect OS X“;“自然卷轴”;设置,javascript,jquery,html,scroll,Javascript,Jquery,Html,Scroll,我面临一个问题。对于我正在做的一个项目,我检测滚轮的位置,并根据它导航到下一张幻灯片。然而,问题是,一些Mac用户使用“自然滚动”——在页面上反转滚动。这意味着,对于这些用户,我应该使用另一个方向的滚动作为触发器 我的问题是,;有没有办法检测用户滚动的方向?我最初的想法是跟踪滚动,看看scrollTop和scrollwheel是如何相互关联的(也就是说,我记录鼠标滚轮事件,看看页面滚动的方向)。然而,这需要用户在我知道该做什么之前滚动。这不起作用,因为用户首先需要触发幻灯片更改 我不知所措。感谢

我面临一个问题。对于我正在做的一个项目,我检测滚轮的位置,并根据它导航到下一张幻灯片。然而,问题是,一些Mac用户使用“自然滚动”——在页面上反转滚动。这意味着,对于这些用户,我应该使用另一个方向的滚动作为触发器

我的问题是,;有没有办法检测用户滚动的方向?我最初的想法是跟踪滚动,看看scrollTop和scrollwheel是如何相互关联的(也就是说,我记录鼠标滚轮事件,看看页面滚动的方向)。然而,这需要用户在我知道该做什么之前滚动。这不起作用,因为用户首先需要触发幻灯片更改


我不知所措。感谢所有帮助。

只要Mac用户使用Safari,实际上有一个简单的答案--

在本例中,当用户将鼠标滚轮(或触控板等效物)从其上移开时,deltaY的值将为正值,否则为负值,无论系统范围内的“自然”滚动设置如何

换句话说,如果webkitDirectionInvertedFromDevice属性存在且值为
true
,则可以确保启用了“自然”滚动。它甚至会在脚本运行时更改设置时更新。该属性仅适用于控制盘事件(不适用于滚动事件)

如果属性不存在,或者存在,但值为“false”(在Chrome中,由于存在bug,这种情况始终存在),那么很遗憾,您不知道滚动方向是否反转


测试页面如何在控制盘事件上移动的想法可能是最可靠的解决方案。您可以在幻灯片前面创建一个不可见(空)div,设置为overflow:scroll,其中有一个更高的空div。第一次在此div上收到滚轮事件时,您可以计算出滚动方向并触发相应的幻灯片更改。

只是想一想:这有关系吗?如果您的幻灯片是水平的,那么向上滚动应该向左或向右导航,这是非常随意的。记住这一点:我想Mac用户应该习惯不同的滚动方向(他们必须随时改变,例如,当他们在城市图书馆使用PC时…)。如果我是你,我就不会在这上面花太多时间;)另一个想法是:mac不只是反转触发的te事件吗?因此,浏览器不知道用户如何滚动,它只接收向上滚动和向下滚动事件。(Mac用户需要测试一下;))是的,我就是这么想的。。。页面仍然向下。存储偏移量并与上一个进行比较,无论移动方向如何,都应该告诉您方向。@giorgio这很重要,因为我们在上下滑动。。不幸的是,Mac没有触发它们。鼠标滚轮事件只显示在轨迹板或鼠标滚轮上发生的事情。@jorg,不幸的是,这只适用于第二张幻灯片和其他幻灯片
function myWheelEventHandler(event) {
  var deltaY = -event.wheelDeltaY;
  if (event.webkitDirectionInvertedFromDevice) deltaY = -deltaY;
  // use value for something
}