2012-07-04 6 views
9

このコードは、文書をクリックするとマウスのスクロール機能を無効にしました。Firefoxのwindow.onmousewheel

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

しかし、これはFirefox以外のすべてのブラウザで機能します。教えてください、どのようにクロスブラウザとしてこのコードを作るのですか?

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

答えて

14

、あなたの代わりにDOMMouseScrollイベントを使用する必要があります。代わりに、DOMMouseScrollイベントでそれを行う必要があります。あなたができるので、文書は常にに結合するのに利用できるようになります:

var cancelscroll = function(e) { 
    e.preventDefault(); 
}; 

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

(注)DOM準備でこれを行う必要はありません。

がサポートされている onmousewheel、あなたはこのような何かを行うことができるかどうかを検出するために、すぐにやってください。


イベントリスナーを削除する方法を尋ねます。同様の条件は、トリックを行います:

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

1.7以降のjQueryを使用している場合は、.bindまたは.oneをonの代わりに使用することをお勧めします。これは、1.7以降でのみサポートされています。 –

6

Firefoxは、このイベントのためにonmousewheel名前をサポートしていません:Firefoxは.onmousewheelをサポートしていません