【问题标题】:window.onmousewheel in FirefoxFirefox 中的 window.onmousewheel
【发布时间】:2012-07-04 12:23:56
【问题描述】:

当我单击文档时,此代码禁用了鼠标滚动功能。

$(document).on("click", function () {
    window.onmousewheel = function (e) {
        e.preventDefault();
    }
});

但是,这适用于除 Firefox 之外的所有浏览器。请告诉,如何使这段代码跨浏览器?

【问题讨论】:

    标签: javascript jquery firefox mousewheel


    【解决方案1】:

    Firefox 不支持.onmousewheel,您必须改用DOMMouseScroll 事件:

    $(document).on( "mousewheel DOMMouseScroll", function(e){
        e.preventDefault();
    });
    

    【讨论】:

    • 对于那些使用 jQuery 1.7 或更低版本的用户,我建议使用 .bind 或 .one 而不是 on,因为 on 仅在 1.7 及更高版本中受支持
    【解决方案2】:

    Firefox 不支持此事件的 onmousewheel 名称。您需要使用 DOMMouseScroll 事件来代替。

    要检测是否支持onmousewheel,您可以执行以下操作:

    var cancelscroll = function(e) {
        e.preventDefault();
    };
    
    if ("onmousewheel" in document) {
        document.onmousewheel = cancelscroll;
    } else {
        document.addEventListener('DOMMouseScroll', cancelscroll, false);
    }
    

    请注意,您无需在 DOM 就绪时执行此操作:文档将始终可以绑定到,因此您可以立即执行此操作。


    您询问如何在每种情况下删除事件侦听器。类似的条件可以解决问题:

    if ("onmousewheel" in document) {
        document.onmousewheel = function() {};
    } else {
        document.removeEventListener('DOMMouseScroll', cancelscroll, false);
    }
    

    【讨论】:

      【解决方案3】:

      您可以使用(新)标准化事件wheel。文档:

      我发现这适用于 OSX (10.9.3) 上的 Firefox v29.0.1 和 Chrome v35.0.1916.114,但不适用于 Safari v7.0.4。

      【讨论】:

      • 带有有用链接的最佳最新答案!
      猜你喜欢
      • 1970-01-01
      • 2012-07-05
      • 2021-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-27
      • 2011-07-21
      相关资源
      最近更新 更多