2016-04-18 16 views
0

Ich möchte das Rechtsklick-Menü auf einer Tabelle deaktivieren. Weil ich den Rechtsklick benutze, um die Farbe zu ändern (habe ein kleines Schlachtschiffspiel gemacht). Ich habe jedoch nichts gefunden, was noch funktioniert. So würde ich wirklich schätzen Ihre Antwort :)Kontextmenü deaktivieren (Rechtsklick) mit Javascript

Dies ist der Aufruf:

<td class="tdBox" onclick="attack(this, ${xStatus.count}, ${yStatus.count})" onmouseover="background(this)" onmouseout="backgroundLeave(this)" oncontextmenu="markField(this)"> 

und dies ist die JavaScript-Funktion:

function markField(obj) { 
    obj.style.backgroundColor = 'blue'; 
    //return false; 
} 
+0

sieht aus wie ein Teil-dup von http://stackoverflow.com/questions/737022/how-do-i-disable-right-click-on-my-web-page – kay27

+0

Nehmen Sie die Code aus dem Link kay27 veröffentlicht. Ersetzen Sie dabei die Zeile "alert (status);" durch Ihren Farbwechselcode. P.S. Ich würde vorschlagen, den Rechtsklick für Ihre Eingabe nicht zu verwenden, da dies in einer Web-App nie eine gute Idee ist. – jitendragarg

Antwort

1

Hier Wie überschreibt man den contextmenu Event-Handler:

document.addEventListener("contextmenu", function(e) { 
    e.preventDefault(); 
    alert('Right click'); 

    // Or, in you case: markField() 
}); 

Hinweis: Die Verwendung von document ist nicht erforderlich. Es funktioniert auf jedem DOM-Knoten. Alternativ können Sie die Blockierung konditionell machen, indem Sie das Ziel e überprüfen.

Fiddle: https://jsfiddle.net/h1jdr1ew/1/

+0

Dies funktioniert teilweise, da ich nicht den Rechtsklick auf der gesamten Website deaktivieren möchte. Allerdings habe ich mit getElementsByClassName eine Lösung gefunden, die darauf basiert. 'Funktion disableRightClick() { \t var tdBox = document.getElementsByClassName (" tdBox "); \t for (i = 0; i Selias

+0

Ja, es funktioniert auf jedem DOM-Knoten, nicht nur' Dokument'. –

0

Versuchen dieser Code

<script language="javascript"> 
function markField(obj) 
{ 
    if(event.button==2) 
    { 
    //add your code here 
    obj.style.backgroundColor = 'blue'; 
    return false;  
    } 
} 
</script> 

<td class="tdBox" onclick="attack(this, ${xStatus.count}, ${yStatus.count})" 
onmouseover="background(this)" onmouseout="backgroundLeave(this)" 
oncontextmenu="markField(this)"> 
+0

Ich habe es mit Rückgabe falsch versucht; aber es hat nicht funktioniert. – Selias

+0

was ist der Fehler kommt? Auch welcher Browser? Bei einigen Browsern ist das Deaktivieren der rechten Maustaste nicht möglich. Bearbeiten: Überprüfen Sie in der Konsole, ob JS einen Fehler auslöst. – jitendragarg

Verwandte Themen