2012-07-09 17 views
5

Próbuję znaleźć sposób wyłączenia domyślnej akcji przycisku kółka myszy, która ma otworzyć łącze w nowej karcie.Jak wyłączyć przycisk kliknięcia myszy?

Czy to możliwe?

+0

tak, to possibru –

+2

Znowu s Ktoś, kto nie szanuje standardowych zdarzeń myszy-.- 'http://www.howtogeek.com/howto/internet/prevent-annoying-websites-from-messing-with-right-click-menu-in-firefox/ i http://www.pcworld.com/article/185288/bring_your_middle_mouse_button_to_life.html –

Odpowiedz

9

Bind a generic click event handler that specifically checks for middle clicks. W ramach tej obsługi zdarzeń, zadzwoń e.preventDefault():

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

pamiętać, że nie wszystkie przeglądarki obsługują zapobiega to domyślne działanie. Dla mnie działa tylko w Chrome. Firefox, Opera i IE9 nie podnoszą kliknięcia dzięki środkowemu kliknięciu myszy. One podnoszą mouseup i mousedown.

+4

Nie działa w chrome http://jsbin.com/arulub/edit#javascript,html Not in firefox. Zwróć uwagę, że twój kod jest nieprawidłowy, '" kliknij ",' nie uruchamia nawet przycisku środkowego/przycisku myszy. – Esailija

+3

nie używaj 'live()'! – Christoph

+0

@Christoph: Przepraszam, skopiowałem to z sugerowanego linku. Poprawiono to. –

2

Wyłącz zdarzenie kółko myszy za pomocą JavaScript:

W IE:

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

W Safari:

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

W Opera:

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

W Firefox:

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

To nie działa w przeglądarce Firefox. – Alvaro

5

Działa to dla mnie ...

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

Przepraszamy za dodanie komentarza, który nie dodaje się do okładki. Ale to jest niesamowite. –

1

Mój kod:

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