2012-07-09 22 views
5

Sto cercando di trovare un modo per disattivare l'azione predefinita del pulsante della rotellina del mouse che è quello di aprire il collegamento in una nuova scheda.Come disattivare la rotellina del mouse Fare clic sul pulsante?

È possibile?

+0

sì, è possibru –

+2

s Anche in questo caso qualcuno che non rispetta gli eventi standard del mouse -.- 'http://www.howtogeek.com/howto/internet/prevent-annoying-websites-from-messing-with-the-right-click-menu-in-firefox/ e http://www.pcworld.com/article/185288/bring_your_middle_mouse_button_to_life.html –

risposta

9

Bind a generic click event handler that specifically checks for middle clicks. All'interno di questo gestore di eventi, chiamare e.preventDefault():

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

Nota che non tutti i browser supportano la prevenzione di questa azione di default. Per me funziona solo su Chrome. Firefox, Opera e IE9 non sollevano l'evento click con il clic del mouse centrale. Stanno alzando mouse e mouse.

+4

Non funziona in chrome http://jsbin.com/arulub/edit#javascript,html Neanche in firefox. Nota che il tuo codice è sbagliato, "clic" non spara nemmeno per il pulsante centrale/rotellina del mouse. – Esailija

+3

non utilizzare 'live()'! – Christoph

+0

@Christoph: Spiacente, copiato dal link suggerito. Corretto –

2

Disabilita evento rotella del mouse utilizzando Javascript:

In IE:

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

In Safari:

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

In Opera:

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

In Firefox:

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

Non funziona in Firefox. – Alvaro

5

Questo funziona per me ...

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

Ci scusiamo per l'aggiunta di un commento che non si aggiunge alla cover. Ma è assolutamente fantastico. –

1

Il mio codice:

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