10

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

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

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

4

3 回答 3

15

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

$(document).on( "mousewheel DOMMouseScroll", function(e){
    e.preventDefault();
});
于 2012-07-04T12:27:42.910 回答
6

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);
}
于 2012-07-04T12:31:16.620 回答
2

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

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

于 2014-06-08T10:14:48.740 回答