2012-07-04 9 views
9

Este código deshabilitó la funcionalidad de desplazamiento del mouse, cuando hago clic en el documento.window.onmousewheel en Firefox

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

pero, esto funciona en todos los navegadores excepto Firefox. dígale por favor, ¿cómo hacer este código como navegador cruzado?

Respuesta

14

Firefox no soporta .onmousewheel, usted tiene que utilizar el evento DOMMouseScroll lugar:

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

para aquellos que usan versiones de 1.7 o menos de jQuery, yo recomendaría usar .bind o .one en lugar de on, solo está soportado en 1.7 y más allá –

6

Firefox no soporta el nombre onmousewheel para este evento. Deberás hacerlo con el evento DOMMouseScroll en su lugar.

para detectar si onmousewheel es compatible, puede hacer algo como esto:

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

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

Tenga en cuenta que usted no necesita hacer esto en DOM listo: el documento estará siempre disponible para unirse a, por lo que puede hazlo de inmediato


Pregunta cómo eliminar el detector de eventos en cada caso. Un condicional similares hará el truco:

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