gpt4 book ai didi

javascript - 如何在 osx 中禁用多重滚动效果并在每次滚动时触发一次滚动事件

转载 作者:搜寻专家 更新时间:2023-11-01 04:41:06 25 4
gpt4 key购买 nike

我需要像 jquery.fullPage 一样组织导航:当我滚动一次时 - 我移动到下一部分。

我尝试为此使用 jquery.mousewheel,但它在带有触摸板或触控板或 APPLE Magic Mouse 的 MacOS 中失败:它每次滚动滚动多张幻灯片。

我尝试使用此解决方案:https://github.com/jquery/jquery-mousewheel/issues/36#issuecomment-67648897

它在 Chrome 中运行良好,但在 FF 中运行不正常,并且在 Safari 中存在错误。

这是问题的简单演示: http://jsfiddle.net/ss5LueLx/13/

$slider.on('mousewheel', function(event) {
if (event.deltaY>0) {
slider.prevSlide();
} else {
slider.nextSlide();
}
});

最佳答案

我在我的 SeaMonkey 浏览器中测试了这条语句,但它失败了。

var delta  = e.type == 'mousewheel' ? e.originalEvent.wheelDelta * -1 : 40 * e.originalEvent.detail;

为了以防万一,我查看了 deltaY,它起作用了:一个方向 +1,另一个方向 -1,就像您在其他两个实现中确定的那样。

console.log(e.deltaY); // view console in FireBug

查看 Firebug 中的事件结构,我可以看到事件类型是“mousewheel”,但在 originalEvent 中我没有看到 wheelData 字段。

虽然有一个详细信息字段,但该字段仍为零。

我想您只有在达到 +/-3 时才会尝试转到下一个项目。我会建议一些类似的东西来完成这个壮举:

// somewhere, initialize to zero
var current_position = 0;


// on mousewheel events
current_position += e.deltaY;

// you had a x 40 which would indicate that the limit is about 120 / 40
// if 3 is too small, you can always increase it to 5 or event 10...
if(current_position <= -3)
{
slider.nextSlide();
current_position = 0;
}
else if(current_position >= 3)
{
slider.prevSlide();
current_position = 0;
}

否则,您可以验证您的 allowScroll 标志是否按预期工作。我不以这种方式对对象进行编程,所以我不太确定它是否正确。 (我使用 prototype 语法,如果你想扩展类,这很有用。)

关于javascript - 如何在 osx 中禁用多重滚动效果并在每次滚动时触发一次滚动事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29628235/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com