Wie bereits erwähnt, kann die rechte Maustaste durch die üblichen Mausereignisse (Mousedown, Mouseup, Klick) erkannt werden . Wenn Sie jedoch nach einem Auslöseereignis suchen, wenn das Kontextmenü angezeigt wird, suchen Sie an der falschen Stelle. Das Rechtsklick- / Kontextmenü ist auch über die Tastatur zugänglich (Umschalt + F10 oder Kontextmenütaste unter Windows und einigen Linux-Versionen). In dieser Situation suchen Sie nach oncontextmenu
:
window.oncontextmenu = function ()
{
showCustomMenu();
return false; // cancel default menu
}
Für die Mausereignisse selbst legen Browser eine Eigenschaft für das Ereignisobjekt fest, auf die über die Ereignisbehandlungsfunktion zugegriffen werden kann:
document.body.onclick = function (e) {
var isRightMB;
e = e || window.event;
if ("which" in e) // Gecko (Firefox), WebKit (Safari/Chrome) & Opera
isRightMB = e.which == 3;
else if ("button" in e) // IE, Opera
isRightMB = e.button == 2;
alert("Right mouse button " + (isRightMB ? "" : " was not") + "clicked!");
}
window.oncontextmenu - MDC
(isRightMB?"was not" : "")
sollte sein(isRightMB?"was" : "was not")
. Richtig ? Bitte helfen Sie bei der Überprüfung.onmousedown
undonmouseup
, aber nichtonclick
. Anscheinend wird in Chromeonclick
nur die linke Maustaste ausgelöst. (und ja Leute, ich habe das mehrmals getestet) Um einen Rechtsklick zu erkennen, müssen Sie entweder kombinierenonmousedown
undonmouseup
oder verwendenoncontextmenu
.Schauen Sie sich den folgenden jQuery-Code an:
Der Wert von
which
wird sein:quelle
.which
nicht dasselbe wie.button
? Oo.button
=> 0,1,2 ;which
=> 1,2,3 . das ist einfach falschSie können das Ereignis
window.oncontextmenu
beispielsweise verwenden:quelle
window.oncontextmenu = function () { e.preventDefault() }
hat nicht funktioniert.Ja, obwohl w3c sagt, dass der Rechtsklick durch das Klickereignis erkannt werden kann, wird onClick in normalen Browsern nicht durch Rechtsklick ausgelöst.
Tatsächlich lösen Sie mit der rechten Maustaste nur onMouseDown onMouseUp und onContextMenu aus.
Daher können Sie "onContextMenu" als Rechtsklickereignis betrachten. Es ist ein HTML5.0-Standard.
quelle
Wenn Sie einen Rechtsklick erkennen möchten, sollten Sie keine
MouseEvent.which
Eigenschaft verwenden, da diese nicht dem Standard entspricht und die Browser inkompatibel sind. (siehe MDN ) Sie sollten stattdessen verwendenMouseEvent.button
. Es wird eine Zahl zurückgegeben, die eine bestimmte Schaltfläche darstellt:0
: Haupttaste gedrückt, normalerweise die linke Taste oder der nicht initialisierte Zustand1
: Hilfstaste gedrückt, normalerweise die Radtaste oder die mittlere Taste (falls vorhanden)2
: Sekundäre Taste gedrückt, normalerweise die rechte Taste3
: Vierte Schaltfläche, normalerweise die Schaltfläche "Browser zurück"4
: Fünfte Schaltfläche, normalerweise die Schaltfläche Browser-WeiterleitungMouseEvent.button
verarbeitet mehr Eingabetypen als nur Standardmaus:Referenz:
quelle
Nein, aber Sie können erkennen, welche Maustaste im Ereignis "onmousedown" verwendet wurde ... und von dort aus feststellen, ob es sich um einen "Rechtsklick" handelt.
quelle
onmousedown
,onmouseup
undonclick
. Wenn Sie das Kontextmenü überschreiben möchten, sollten Sie diese Ereignisse jedoch nicht verwenden (siehe meine Antwort unten).Der folgende Code verwendet jQuery, um ein benutzerdefiniertes
rightclick
Ereignis basierend auf dem Standardmousedown
und denmouseup
Ereignissen zu generieren . Dabei werden folgende Punkte berücksichtigt:contextmenu
Ereignis dort nicht ausgelöst wird)on('contextmenu', ...)
tutquelle
Ja, so ist es!
quelle
elem.addEventListener("click", doSomething)
Ja, das Kontextmenü ist wahrscheinlich die beste Alternative. Beachten Sie jedoch, dass es mit der Maus nach unten ausgelöst wird, während das Klicken mit der Maus nach oben ausgelöst wird.
Andere verwandte Fragen betrafen das Doppelklicken mit der rechten Maustaste - was anscheinend nur durch manuelle Timerprüfung unterstützt wird. Ein Grund, warum Sie möglicherweise einen Doppelklick mit der rechten Maustaste wünschen, ist, wenn Sie die Eingabe mit der linken Hand benötigen (Tastenumkehr). Die Browser-Implementierungen scheinen viele Annahmen darüber zu treffen, wie wir die verfügbaren Eingabegeräte verwenden sollten.
quelle
Der einfachste Weg, um mit der rechten Maustaste zu klicken, ist die Verwendung
Dies ist jedoch keine browserübergreifende Lösung. Browser verhalten sich für dieses Ereignis unterschiedlich, insbesondere Firefox und IE. Ich würde unten für eine Cross-Browser-Lösung empfehlen
quelle
Dies ist der einfachste Weg, um es auszulösen, und es funktioniert in allen Browsern mit Ausnahme von Anwendungs-Webviews wie (CefSharp Chromium usw.). Ich hoffe mein Code hilft dir und viel Glück!
quelle
quelle
Wenn Sie die Funktion aufrufen möchten, während Sie mit der rechten Maustaste auf ein Ereignis klicken, können Sie Folgendes verwenden
quelle
Das wird bei mir gearbeitet
quelle
Versuchen Sie es mit der Eigenschaft
which
und / oderbutton
Die Demo
Einige Infos hier
quelle
Ereignis mit
jQuery
Bibliothek behandelnquelle
Um mit der rechten Maustaste zu klicken, können Sie das Ereignis 'oncontextmenu' verwenden. Unten ist ein Beispiel:
Der obige Code warnt Text, wenn Sie mit der rechten Maustaste klicken. Wenn das Standardmenü des Browsers nicht angezeigt werden soll, können Sie return false hinzufügen. Am Ende des Funktionsinhalts. Vielen Dank.
quelle
Ja, es ist ein Javascript-Mousedown-Ereignis. Es gibt auch ein jQuery- Plugin, um dies zu tun
quelle