【问题标题】:Fullpage.js OnLeave firing twice when return false in all browsers but ChromeFullpage.js OnLeave 在除 Chrome 之外的所有浏览器中返回 false 时触发两次
【发布时间】:2015-09-13 14:14:52
【问题描述】:

我有这个代码:

$('#fullpage').fullpage({
    scrollingSpeed: 500,
    onLeave: function(index, nextIndex, direction){
        if(nextIndex == 2){
                alert('test');
            return false;
        }
    }
});

在 Chrome 中,警报只发生一次,但在 Firefox 和 IE 中,它似乎发生了两次。任何关于为什么会发生这种情况的见解都将非常感激!

这是小提琴:http://jsfiddle.net/97tbk/856/

谢谢!

【问题讨论】:

  • 我发现这个链接github.com/alvarotrigo/fullPage.js/issues/759 描述了同样的问题,据报道它在 2.3.5 中已修复,但看看你的问题,似乎不是这样。如果您将“autoScrolling:true”添加到您的小提琴中,问题就会消失。

标签: jquery fullpage.js


【解决方案1】:

这似乎是 fullPage.js 中的一个错误,与它处理鼠标事件的方式有关:

function addMouseWheelHandler() {
    if (document.addEventListener) {
        document.addEventListener('mousewheel', MouseWheelHandler, false); //IE9, Chrome, Safari, Oper
        document.addEventListener('wheel', MouseWheelHandler, false); //Firefox

    // [[[[[[[ THE ISSUE IS HERE ]]]]]]]
        document.addEventListener('DOMMouseScroll', MouseWheelHandler, false); //Old Firefox 
    } else {
        document.attachEvent('onmousewheel', MouseWheelHandler); //IE 6/7/8
    }
}

似乎 Firefox 正在监听 wheelDOMMouseScroll 这两个事件。你可以检查它here。 尝试删除“Old firefox”事件处理程序 (DOMMouseScroll),您会发现它现在只触发一个。

随时打开一个问题in fullpage.js repository 报告它。

【讨论】:

  • 我刚刚在 Firefox 和 Chrome 中都试过了。 Firefox 每次滚动记录 1 个事件,而 Firefox 每次滚动记录 2 个。
  • 太棒了,这确实为我在 Firefox 中修复了它。 Internet Explorer 仍在记录两次,知道如何解决吗?
  • 请接受这个答案并打开一个新的。
  • 问题没有指定 Firefox,仍然是同样的问题,只是针对 IE。
  • 我会在下一个版本中查看它。同时阅读this answer
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-08
  • 1970-01-01
  • 2011-09-18
  • 2013-09-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多