Rechtsklickevent ohne Kontextmenü

GartenUmgraben

Erfahrenes Mitglied
Ich habe ein IMG das beim anklicken je nachdem mit welcher Taste ich anklicke etwas anderes ausführt. Soweit so gut. Nur wenn ich die rechte Taste drücke kommt auch immer bei dem Bild das Kontextmenü. Wie lässt sich das unterdrücken ?

Hab bereits <body oncontextmenu="return false"> versucht, was auch geht für die Seite .. aber bei dem Bild kommt trotzdem noch immer das Menü :-/

<html>
<head>
<script type="text/javascript">

function test()
{
var x = new getObj('testbild');
x.obj.onmousedown = machirgendwas;
}

function machirgendwas(e)
{
if (!e) e = window.event;
document.write("Typ: " + e.type + " " + "<br>Button: " + e.button);
if (e.button == 0 || e.button == 1) document.write("<br>Linke Maustaste");
if (e.button == 2) document.write("<br>Rechte Maustaste");
}

function getObj(name)
{
if (document.getElementById)
{
this.obj = document.getElementById(name);
this.style = document.getElementById(name).style;
}
}



</script>
</head>
<body oncontextmenu="return false">
<img id="testbild" src="bla.jpg" alt="Bild" width=20 height=20 onLoad="test()">

</body>
</html>
 
Auch wenn ich den Sinn dieses Unterfanges in Frage stelle, du koenntest einen versteckten Layer ueber das Bild legen. Das fuert dazu, dass die Klicks nicht auf das Bild gehen sondern auf den Layer.

Ich fuer meinen Teil habe aber mein Kontextmenue gerne - auch bei bildern - und faende es sehr schwach von einem Webdeveloper mir das fuer irgenteine mehr oder eher wenider nuetzliche Spielerei zu nehmen. Ganz davon abgesehen wueder ich deine Spieler eh nie sehen, da es in vielen Borwsern eine Option gibt, die das herumspielen mit dem Kontexmenue ueber Javascript schlicht und einfach abschaltet.

Mein Tipp also: Lass es sein.
 
Hmm ich frage mich was der Layer bringt ? Denn bei einem Klick soll ja was passieren...nur das Menü soll wegbleiben weil es eben stört.

Am Ende soll im Browser eine Art "Spiel" entstehen wo halt bei einem Button (also mein Bild) je nach Maustaste etwas anderes passiert.
 
Also wenn ich dich richtig verstanden habe, dann sagtest du doch, dass es mit oncontextmenu="return false" im Grunde funktioniert, nur halt dann nicht wenn man auf ein Bild klickt. Liegt ein unsichtbarer Layer ueber jendem Bild, heisst das aber fuer den Borwser, dass man auf diesen Layer und nicht auf das Bild klickt. Jetzt verstanden?
 
ich hab es nicht ganz gelesen, aber ich hab gesehen, dass du die funktion irgendwas falsch aufrufst. da müssen
  • geöffnete klammer
  • parameter e
  • geschlossene klammer
hin

lg
 
Hi,

der Aufruf
Code:
x.obj.onmousedown = machirgendwas;
ist richtig. Damit erfolgt die Zuweisung einer Funktion an den Eventhandler.


Das obige Problem könnte über den Eventhandler oncontextmenu, der für das Bild definiert wird, gelöst werden.
Code:
<html>
<head>
<script type="text/javascript">
function machirgendwas(e){
  (e)? e.preventDefault() : (window.event.returnValue=false);

  alert('Kontextmenue');
}

window.onload = function(){
  document.getElementById('testbild').oncontextmenu = machirgendwas;
}
</script>
</head>
<body>
	<img id="testbild" src="bild.jpg" alt="Bild" />
</body>
</html>
Ciao
Quaese
 
Zurück