Hallo,
function doSomething(e) {
var posx = 0;
var posy = 0;
if (!e) var e = window.event;
if (e.pageX || e.pageY) {
posx = e.pageX;
posy = e.pageY;
}
else if (e.clientX || e.clientY) {
posx = e.clientX + document.body.scrollLeft
+ document.documentElement.scrollLeft;
posy = e.clientY + document.body.scrollTop
+ document.documentElement.scrollTop;
}
}reinkopiert. Die Javascriptkonsole von Firefox sagt aber, dass "e" nicht definiert sei. Was mache ich falsch?
Das Event-Objekt wird übergeben, wenn diese Funktion als Event-Handler registriert ist und infolge eines Klicks bzw. contextmenu-Events aufgerufen wird.
Wenn du z.B.
document.oncontextmenu = eigenesMenu;
definierst (und die Funktion entsprechend nennst), sollte es gehen.
An welcher Stelle muss ich folgendes in diese Funktion schreiben?
document.getElementById("menu").style.position = "absolute";
document.getElementById("menu").style.left = posx;
document.getElementById("menu").style.top = posy;
Einfach ans Ende der obigen Funktion anfügen, wenn posx und posy berechnet wurden.
Am Ende der Funktion sollte return false; stehen, damit das Standard-Kontextmenü nicht eingeblendet wird. Das wirkt aber wie gesagt nicht, wenn der Browser nicht entsprechend liberal eingestellt ist.
Mathias