2012-07-04 24 views
9

Mã này đã tắt chức năng cuộn chuột khi tôi nhấp vào tài liệu.window.onmousewheel trong Firefox

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

nhưng, thao tác này ở tất cả các trình duyệt ngoại trừ Firefox. xin vui lòng cho biết, làm thế nào để làm cho mã này như là trình duyệt chéo?

Trả lời

14

Firefox không hỗ trợ .onmousewheel, bạn phải sử dụng sự kiện DOMMouseScroll thay vì:

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

cho những người sử dụng các phiên bản 1.7 hoặc ít hơn của jQuery tôi khuyên bạn nên sử dụng .bind hoặc .one thay vì bật như trên chỉ được hỗ trợ trong 1.7 và hơn thế nữa –

6

Firefox không hỗ trợ tên onmousewheel cho sự kiện này. Thay vào đó, bạn cần phải thực hiện điều đó với sự kiện DOMMouseScroll.

Để phát hiện xem onmousewheel được hỗ trợ, bạn có thể làm một cái gì đó như thế này:

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

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

Lưu ý rằng bạn không cần phải làm điều này trên DOM đã sẵn sàng: tài liệu sẽ luôn luôn có sẵn để ràng buộc, vì vậy bạn có thể làm điều đó ngay lập tức.


Bạn hỏi cách xóa trình xử lý sự kiện trong từng trường hợp. Một điều kiện tương tự sẽ thực hiện thủ thuật:

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