2016-05-27 13 views
1

Ich habe diesen Code:Rechtsklick wirkt wie ein Linksklick auf das Ereignis

document.getElementById("1").oncontextmenu = function() { 
    return false 
} 

Es deaktiviert das kleine Fenster, das nach einem Rechtsklick zeigt (nur auf den Button/Bild).

Auf meinem Code (https://jsfiddle.net/nnuyguat/) funktioniert alles gut, außer wenn ich einen Rechtsklick auf das Bild mache, da es das Linksklick-Ereignis auslöst und das Bild ändert, bis ich die Maus bewege.

Ein anderes verwandtes Problem ist, wenn ich links klicke, ohne loszulassen und dann rechts klicke (Freigabe der rechten Taste), wird es auch das Bild ändern.

Ich muss verhindern, dass das Bild mit rechten Klicks ändert. Es sollte als die schließende Taste des Browsers funktionieren (außer es ist ein anderes Bild und es schließt nichts).

+0

Mögliche Duplikate von [Ist Rechtsklick auf ein Javascript-Ereignis?] (Http://StackOverflow.com/Questions/2405771/IS-Right-Click-AJavascript-Event) –

+2

@ Error404 Es ist keine Duplizierung wie in diesem andere Frage hat nicht die Antwort für dieses spezifische Problem und es hat nicht einmal eine akzeptierte Antwort. – JavaScript

+1

Aber es hat die Lösung, das Rechtklickereignis wie gewünscht in Ihrer Frage zu behandeln. Natürlich, niemals wird es immer zwei Probleme geben (oder zumindest ist es sehr seltsam, dass zwei allgemeine Probleme gleich sind, vielleicht verwandt sind). Wenn Sie mit der rechten Maustaste umgehen können, können Sie es auch vermeiden. –

Antwort

1

Das Rechtsklick-Ereignis löst keinen Linksklick aus. Es aktiviert nur dein Objekt. Dein Bild sagt "Klick", aber es ist ungenau. Es sollte "Aktiv" sagen.

Zweitens ist eine Nummer keine gültige ID. Benenne also dein div von id = "1" in id = "eins" oder ähnlich.

schließlich mit diesem Code versuchen, anstelle von Ihnen:

document.getElementById("one").addEventListener('contextmenu', function(ev) { 
    ev.preventDefault(); 
    alert('hello from right click'); 
    return false; 
}, false); 

Siehe https://jsfiddle.net/nnuyguat/3/

+0

Ich werde die Bilder und die ID ändern. Der Code, den Sie zur Verfügung gestellt haben, ist genug für mich, damit es funktioniert, danke! – JavaScript

0

Es ist wegen der oncontextmenu Ereignis. Entfernen Sie es und es funktioniert

+0

Das ist nicht das Problem, wenn ich es entferne, funktioniert es immer noch nicht.Das Problem ist das Ereignis, das bewirkt, dass die Bildänderung beim Klicken nicht für Linksklick erfolgt, sondern für jeden Klick. – JavaScript

2

Sie können event.button verwenden, um zu überprüfen, welche Taste gedrückt wird, da event.button eine Zahl zurückgibt, die angibt, welche Maustaste gedrückt wurde.

Source

Edit:

if (event.button === 2){ 
    // run your function 
} 

Das ist richtig sein sollte, da ich noch nie zuvor verwendet haben.

+0

Könnten Sie es mit etwas Code unterstützen? Ein Beispiel oder direkt an meinem Code ändern. – JavaScript

1

Das Problem mit dem Bild auf dem rechten Maustaste ändert zu Ihrem Javascript nicht verwandt, aber zu Ihrem CSS. Die CSS-Pseudoklasse :active stimmt überein, wenn ein Element vom Benutzer aktiviert wird. Gemäß den Spezifikationen sollte dies nur sein, wenn das Element mit der primären Maustaste aktiviert wird, aber es scheint, als ob die meisten Browser die Spezifikation nicht korrekt implementieren. Sehen Sie dieses question für Info.

Eine Arbeit um vielleicht die :active Pseudo-Klasse zu verlassen, und richten Sie eine Funktion, um den Inhalt explizit mit der linken Maustaste zu ändern.

+0

Ist es möglich, das ': active' temporär aufzugeben/zu entfernen, wenn man mit der rechten Maustaste klickt oder mit der rechten Maustaste das Bild in die richtige umwandelt? – JavaScript

Verwandte Themen