~b: Kontextmenü mittels onmousedown-Event

Beitrag lesen

Hallo Forum,

ich versuche gerade für eine (nicht öffentliche) Webanwendung ein eigenes Kontextmenü zu erstellen, welches allerdings nur bei einem Rechtsklick auf bestimmte Elemente erscheinen soll. Das Script sollte einigermaßen Cross-Browser-tauglich sein (FX, IE, Opera*, Chrome**). Beim Aufruf der Funktion für das eigene Kontextmenü soll zudem ein (dynmischer) Integer-Wert übergeben werden, was die Sache ein wenig verkompliziert.

Praktischer Weise verstehen einige Browser die "oncontextmenu"-Methode, aber leider eben nicht alle, zumal es kein "Standard" ist. Also versuche ich das Ganze via "onmousedown" zu lösen, was bisher auch ganz gut klappt.

  
function getContextMenu (objEvt, iArg)  
{  
    // for IE  
    if (!objEvt)  
    {  
        objEvt = window.event;  
    }  
  
    // IE uses the "button" event, all other "which"  
    // in IE 2 is the right button, 3 in all other  
    if (objEvt.button === 2 || objEvt.which === 3) {  
        alert(iArg);  
    }  
};  

  
This is a <span onmousedown="getContextMenu(event, 123);">text</span>.  

Ich denke der Code ist recht selbsterklärend. Er funktioniert soweit auch ganz gut und vor allem in allen gewünschten Browsern. Nur gibt es Browser, wie z.B. der Firefox, die die Eigenschaft besitzen, nach dem Rechtsklick-Event und der ausgeführten Funktion noch ihr eigenes Kontextmenü zu präsentieren. Dies ist natürlich nicht gewünscht und soll unterbunden werden. Nun habe ich schon recht viel ausprobiert, bisher aber keine legitime Lösung gefunden.

Hat einer einen Rat, eine Idee oder natürlich am Besten eine Lösung?

Danke und Gruß
Bastian

*) Bei Opera ist das Rechtsklick-Event auf Elemente standardmäßig deaktiviert. Dieses Verhalten wird ignoriert, sprich es wird vorausgesetzt, dass diese Option im Browser aktiviert ist.

**) Für Testzwecke nutze ich Iron.