UPDATE工作修復大衛的建議(見下文):火狐+ jQuery的鼠標滾輪滾動事件錯誤
更換
$('.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等)
這是真正的Firefox中的錯誤(如果是的話是否有跨瀏覽器的黑客可能會做的伎倆)?或者,如果您知道任何其他解決方案都可以在沒有頁面滾動窗口的情況下實現捕捉鼠標滾輪事件的同樣效果,請隨時回答!
提示:在FF,而不是event.originalEvent.wheelDelta – CoffeJunky
使用event.originalEvent.deltaY的方向救了我的天!豎起大拇指! –