2012-07-09 134 views
5

Estoy tratando de encontrar una manera de deshabilitar la acción predeterminada del botón de la rueda del mouse, que es abrir el enlace en una nueva pestaña.Cómo deshabilitar la rueda del mouse, haga clic en el botón?

¿Es esto posible?

+0

sí, es possibru –

+2

nuevamente el S alguien que no respeta los eventos estándar del mouse -.- 'http://www.howtogeek.com/howto/internet/prevent-annoying-websites-from-messing-with-the-right-click-menu-in-firefox/ y http://www.pcworld.com/article/185288/bring_your_middle_mouse_button_to_life.html –

Respuesta

9

Bind a generic click event handler that specifically checks for middle clicks. Dentro de ese controlador de eventos, llame e.preventDefault():

$("#foo").on('click', function(e) { 
    if(e.which == 2) { 
     e.preventDefault(); 
    } 
}); 

Tenga en cuenta que no todos los navegadores son compatibles con la prevención de esta acción por defecto. Para mí, solo funciona en Chrome. Firefox, Opera e IE9 no levantan el evento click con un clic en el medio del mouse. Aumentan mouseup y mousedown.

+4

No funciona en Chrome http://jsbin.com/arulub/edit#javascript,html No en Firefox tampoco. Tenga en cuenta que su código es incorrecto, '" clic "' ni siquiera se dispara para el botón medio/rueda del mouse. – Esailija

+3

¡no use 'live()'! – Christoph

+0

@Christoph: Lo siento, copié eso del enlace sugerido. Corregido. –

2

Desactivar evento rueda del ratón mediante el uso de JavaScript:

En IE:

document.attachEvent('onmousewheel', function(e){ 
    if (!e) var e = window.event; 
    e.returnValue = false; 
    e.cancelBubble = true; 
    return false; 
}, false); 

En Safari:

document.addEventListener('mousewheel', function(e){ 
    e.stopPropagation(); 
    e.preventDefault(); 
    e.cancelBubble = false; 
    return false; 
}, false); 

En Opera:

document.attachEvent('mousewheel', function(e){ 
    if (!e) var e = window.event; 
    e.returnValue = false; 
    e.cancelBubble = true; 
    return false; 
}, false); 

En Firefox:

document.addEventListener('DOMMouseScroll', function(e){ 
    e.stopPropagation(); 
    e.preventDefault(); 
    e.cancelBubble = false; 
    return false; 
}, false); 
+0

No funciona en Firefox. – Alvaro

5

Esto funciona para mí ...

$(document).on("mousedown", "selector", function (ev) { 
    if (ev.which == 2) { 
     ev.preventDefault(); 
     alert("middle button"); 
     return false; 
    } 
}); 
+0

Perdón por agregar un comentario que no se agrega a la coversation. Pero eso es completamente increíble. –

1

Mi código:

$(document).on('auxclick', 'a', function(e) { 
if (e.which === 2) { //middle Click 
    e.preventDefault(); 
    e.stopPropagation(); 
    e.stopImmediatePropagation(); 
    return false; 
} 
return true; 
Cuestiones relacionadas