Ich habe festgestellt, dass diese Frage zuvor bereits bei MozillaZine gestellt wurde . Bei dieser Lösung wird das Kontextmenü in der oberen linken Ecke des Bildschirms angezeigt. Ich habe versucht, die Lösung für diese andere Frage zu verwenden, wie man DOM-Bildschirmpositionen erhält, um den folgenden Code zu erzeugen, der das Kontextmenü näher an das aktive Element bringt, aber es ist immer noch fehlerhaft (manchmal ist das Menü etwas vom Element entfernt):
var target = (document.commandDispatcher.focusedElement || document.commandDispatcher.focusedWindow.document.documentElement); var screenX=0; var screenY=0; if ("boxObject" in target) { screenX=target.boxObject.x; screenY=target.boxObject.y; } else { var box; try { box = elem.getBoundingClientRect(); } catch(e) {} // Make sure we're not dealing with a disconnected DOM node if (box) { var body = document.body, clientTop = document.documentElement.clientTop || body.clientTop || 0, clientLeft = document.documentElement.clientLeft || body.clientLeft || 0, scrollTop = window.pageYOffset || body.scrollTop, scrollLeft = window.pageXOffset || body.scrollLeft, top = box.top + scrollTop - clientTop, left = box.left + scrollLeft - clientLeft; } screenX=target.offsetLeft; screenY=target.offsetTop; } var e = document.createEvent("MouseEvents"); e.initMouseEvent("contextmenu", true, false, null, 0, screenX, screenY, 0, 0, false, false, false, false, 0, null); target.dispatchEvent(e);