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

onmousewheelFirefoxはこのイベントの名前をサポートしていません。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)のFirefoxv29.0.1およびChromev35.0.1916.114で機能しますが、Safariv7.0.4では機能しないことがわかりました。

于 2014-06-08T10:14:48.740 に答える