Ich verwende das onclick
Ereignis einer Hash-Verknüpfung, um eine <div>
als Popup zu öffnen. Aber der mittlere Klick löst das onclick
Ereignis nicht aus, aber nimmt nur den href
Attributwert des Links und lädt die URL in einer neuen Seite. Wie kann ich den mittleren Klick verwenden, um das <div>
als Popup zu öffnen?Auslösen onclick Ereignis mit der mittleren Maustaste
Antwort
Die Antwort von beggs ist korrekt, aber es klingt so, als ob Sie die Standardaktion des mittleren Klicks verhindern möchten. In diesem Fall sind die Standardaktion des Ereignisses die folgenden
$("#foo").on('click', function(e) {
if(e.which == 2) {
e.preventDefault();
alert("middle button");
}
});
preventDefault() stoppt.
Beachten Sie, dass '.live' veraltet ist und zugunsten von' .on' entfernt wurde. – Neal
funktioniert nicht in Firefox –
Um dies in FF arbeiten zu lassen: var evt = e || Fenster.Ereignis; –
können Sie
verwenden geklickt, welche Maustaste wurde zu identifizieren.
Gibt einen ganzzahligen Wert zurück, der die Schaltfläche angibt, die den Status geändert hat.
- 0 für Standard 'Klick', in der Regel linke Taste
- 1 für mittlere Taste, in der Regel Rad-Klick
- 2 für die rechte Taste, in der Regel der rechte Maustaste
Beachten Sie, dass diese Konvention wird nicht im Internet Explorer verfolgt: siehe QuirksMode für Details.
Die Reihenfolge der Schaltflächen hängt davon ab, wie das Zeigegerät konfiguriert wurde.
Lesen Sie auch
Which mouse button has been clicked?
Es gibt zwei Eigenschaften out für die Suche, die Maustaste geklickt wurde: der und Taste. Bitte beachten Sie , dass diese Eigenschaften nicht immer auf einem Klick-Ereignis arbeiten. Um sicher eine eine Maustaste zu erkennen, müssen Sie die mousedown oder mouseup Ereignisse verwenden.
Ich würde empfehlen, 'event.which' zu verwenden, da es in den Browsern in der jQuery-Quellzeile standardisiert wurde - Zeile 2756 - 'if (! event.which && event.button) event.which = (ereignis.button & 1? 1: (ereignis.button & 2? 3: (ereignis.button & 4? 2: 0))); ' –
@RussCam 'MouseEvent.which' ist in keiner Spezifikation definiert, sondern' MouseEvent.Schaltfläche "ist in DOM L2 Events definiert. – Oriol
@Oriol korrekt, aber unterschiedlich über verschiedene Browser-Anbieter implementiert. Das OP hat die Frage mit jQuery versehen, deshalb habe ich vorgeschlagen, 'event.which' zu verwenden, aber ich hätte ausgearbeitet, dass' MouseEvent.which' nicht Teil der offiziellen Spezifikation ist. –
jQuery ein .which
Attribut für das Ereignis, das nach rechts, wie 1, 2, 3. In diesem Fall möchten Sie 2.
Verwendung der Klick-Taste ID von links gibt:
$("#foo").live('click', function(e) {
if(e.which == 2) {
alert("middle button");
}
});
Adamantium Antwort wird auch funktionieren, aber Sie müssen für IE aufpassen, wie er bemerkt:
$("#foo").live('click', function(e) {
if((!$.browser.msie && e.button == 1) || ($.browser.msie && e.button == 2)) {
alert("middle button");
}
});
auch die 0.123.Attribut ist 0-indiziert nicht 1-indexiert wie .which
.
kann ich die Funktionalität von Mozilla Browser überschreiben !! zB mit einem linken Klick öffnet sich ein Popup .... aber für den mittleren Klick öffnet sich kein Popup und ein neuer Tab wird geöffnet, in dem sich das Popup nicht öffnet .. also möchte ich einen mittleren Klick außer Kraft setzen Funktionalität von Mozilla .... –
Mozilla hat eine Einstellung, um alle Popups in einem neuen Tab statt einem neuen Fenster zu öffnen. Wenn der Benutzer diese Option aktiviert hat, dann denke ich nicht, dass Sie etwas tun können. Wenn dies nicht der Fall ist, können Sie einen Code oder einen Link zur Problemseite veröffentlichen? – beggs
Es funktioniert nicht mit Klickereignis in FF. – l00k
Die richtige Methode ist .on
zu verwenden, da .live
ist veraltet und dann von jQuery entfernt:
$("#foo").on('click', function(e) {
if(e.which == 2) {
e.preventDefault();
alert("middle button");
}
});
Oder wenn Sie die „live“ wie Gefühl und #foo
wollen, ist nicht auf Ihrer Seite auf Dokument Start:
$(document).on('click', '#foo', function(e) {
if(e.which == 2) {
e.preventDefault();
alert("middle button");
}
});
Ich weiß, dass ich zu spät zur Party bin, aber für diejenigen, die immer noch Probleme mit dem mittleren Klick haben, überprüfen Sie, ob Sie das Event delegieren. Im Falle einer Delegierung wird das Ereignis click
nicht ausgelöst. Vergleichen:
Dies funktioniert für mittlere Klicks:
$('a').on('click', function(){
console.log('middle click');
});
Dies funktioniert nicht für mittlere Klicks:
$('div').on('click', 'a', function(){
console.log('middle click');
});
Wenn Sie immer noch in der Mitte klicken mit verfolgen, müssen Ereignisdelegation, die einzige Möglichkeit, wie in der entsprechenden jQuery ticket angegeben, ist mousedown
oder 01 zu verwendenstattdessen. Wie so:
Dies funktioniert für delegierte Mitte Klicks:
$('div').on('mouseup', 'a', function(){
console.log('middle click');
});
Diese Frage ist ein bisschen alt, aber ich fand eine Lösung:
$(window).on('mousedown', function(e) {
if(e.which == 2) {
e.preventDefault();
}
});
Chrome nicht feuern "klicken Sie auf" Ereignis für das Mausrad
Arbeit in FF und Chrome
ich in der Regel hasse es, wenn Leute Alternativen anstelle von Lösungen anbieten, aber da bereits Lösungen bereitgestellt wurden, werde ich meine eigene Regel brechen.
Websites, auf denen die Funktion zum mittleren Klicken überschrieben wird, neigen dazu, mich wirklich zu stören. Normalerweise klicke ich mit der mittleren Maustaste, weil ich den neuen Inhalt in einem neuen Tab öffnen möchte, während ich den aktuellen Inhalt ungehindert sehen kann. Immer wenn Sie die Funktion für den mittleren Klick allein lassen und den relevanten Inhalt über das HREF-Attribut des angeklickten Elements verfügbar machen können, sollten Sie davon ausgehen, dass Sie dies tun sollten.
- 1. Bind-Ereignis mit der rechten Maustaste
- 2. Kein Klicken mit der mittleren Maustaste im Visual Studio 2010?
- 3. Deaktivierung der mittleren Klick-Scrolling mit Javascript
- 4. Wie kann ich Onclick-Ereignis programmgesteuert in Android auslösen?
- 5. Verwenden von jQuery zum Auslösen von HTML-onclick-Ereignis
- 6. autoLink mit onClick-Ereignis
- 7. Kann JavaScript-Ereignis nicht auslösen OnClick des Kontrollkästchens
- 8. Reagieren onClick-Ereignis
- 9. Gibt es ein Ereignis für die mittlere Maustaste im Dart?
- 10. d3 - auslösen mouseover Ereignis
- 11. OracleDependency nicht auslösen Ereignis
- 12. MFC-Tabbed-Dokumente - wie kann man mit der mittleren Maustaste das Dokument schließen?
- 13. manuell Touch-Ereignis auslösen
- 14. Versuchen, onClick-Ereignis mit jQuery
- 15. Geordnetes Element Click-Ereignis auslösen das übergeordnete Click-Ereignis
- 16. MapView onCLick Ereignis-Listener
- 17. IE8 Onclick-Handler Ereignis
- 18. KeyDown-Ereignis nicht mit .NET WinForms auslösen?
- 19. iOS - Ereignis auf Proximity mit iBeacons auslösen
- 20. zurückgesetzt Variable Onclick-Ereignis
- 21. deaktivieren Onclick-Ereignis jquery
- 22. Wie erkennen Sie den mittleren Mausklick?
- 23. html div Onclick-Ereignis
- 24. Handle ShareActionProvider onClick-Ereignis
- 25. Alarm msg Onclick-Ereignis
- 26. Wie auslösen Ereignis mit jquery eingeben
- 27. Kann ich mit Ausnahme von onClick einen Ripple-Effekt auf ein anderes Ereignis auslösen?
- 28. Wie generiert man ein Rechtsklick-Ereignis, wenn ein Ereignis mit der linken Maustaste generiert wird?
- 29. Inline Javascript Onclick-Ereignis
- 30. HTML-Tabelle: Bearbeiten Schaltfläche auslösen Javascript-Ereignis
Ich verstehe immer noch nicht, wie das Problem gelöst wurde, wenn der mittlere Klick nicht das Onclick-Ereignis auslöst. –
@ TomášZato Browser feuern kein "Klick" -Ereignis mit einem mittleren Klick, aber sie können ein "MouseUp" -Ereignis auslösen. Dann kann das JavaScript-Framework dies mit einer "Klick" -Aktion verbinden, um Sie zu verwirren. Ich empfehle das Lesen von http://www.unixpapa.com/js/mouse.html – rds