更新Davidが提案した作業修正(以下を参照):
交換
$('.scrollMe').bind("mousewheel DOMMouseScroll", ...)
と
$('.scrollMe').bind("mousewheel DOMMouseScroll MozMousePixelScroll", ...)
元の投稿
Firefox 16.0.2 (最新) では、「mousewheel / DOMMouseScroll」イベントをバインドするときに問題が発生します。マウス ポインターが対象の div の上にあるときにマウスホイールでスクロールすると、ウィンドウもスクロールしますが、明らかにこれは望ましくありません。
伝播を停止する方法などをいくつか追加してみましたが、何もうまくいかないようです。
Javascript コード:
$(document).ready(function() {
$('.scrollMe').bind("mousewheel DOMMouseScroll", function(e) {
e.stopImmediatePropagation();
e.stopPropagation();
e.preventDefault();
var delta = parseInt(e.originalEvent.wheelDelta || -e.originalEvent.detail);
$(this).empty();
return false;
});
});
実際の動作を確認するには、以下の jsFiddle リンクをたどってください。サンプル ページでは、マウス ポインターを赤いボックスの div 内に置き、マウスのスクロール ホイールを使用します。Firefox は初めて (予期せず) 親ウィンドウをスクロールしますが、他のブラウザーはスクロールしません。
特異なのは、バインドされた要素でイベントを発生させると、Firefox が動作を繰り返さないことです。つまり、ページのスクロールが停止します。ただし、後で手動でページをスクロールして再試行すると、この動作が繰り返されます。
これは IE9 と Chrome でもテストしましたが、これらのブラウザーではこの問題を検出できませんでした (ウィンドウが予期せずスクロールしないことを意味します)。 )
これは本当に Firefox のバグですか? または、ページのウィンドウをスクロールせずにマウスホイール イベントをキャッチするのと同じ効果を達成するための他の解決策を知っている場合は、お気軽に回答してください!