Wie kann man die Tastenkombination für das Firefox-Kontextmenü ändern?

1482
ws_e_c421

Ich versuche, die Tastenkombination für das Anzeigen des Kontextmenüs in Firefox zu ändern (entspricht dem Drücken Shift-F10von Linux, Windows oder Control-SpaceOS X). Es scheint, als würde diese Verknüpfung auf einer anderen Ebene als bei normalen Tastenkombinationen gehandhabt (sie wird nicht in der Keyconfig-Erweiterung angezeigt, die ein Remapping der meisten Tastenkombinationen ermöglicht).

Ich habe versucht, Schlüssel- und Mausereignisse zu erstellen, um das Kontextmenü auszulösen (unter Verwendung des folgenden Codes, der einer Tastenkombination mit Keyconfig zugeordnet ist), aber sie haben bisher nicht funktioniert. Ich konnte nicht herausfinden, wo Firefox die Tastenkombination für das Kontextmenü im Quellcode ausführt oder ob es eine einzige Funktion gibt, die ich aufrufen könnte, um es anzuzeigen.

Mausevent:

var focused = document.commandDispatcher.focusedElement; if(!focused) focused = document.commandDispatcher.focusedWindow.document.activeElement; var evt = document.createEvent("MouseEvents"); evt.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 2, null); focused.dispatchEvent(evt); 

Schlüsselereignis:

var focused = document.commandDispatcher.focusedElement; if(!focused) focused = document.commandDispatcher.focusedWindow.document.activeElement; var evt = document.createEvent("KeyboardEvent"); evt.initKeyEvent("keypress", true, true, null, false, false, true, false, 0x79, 0); focused.dispatchEvent(evt); 
1

2 Antworten auf die Frage

0
Sudhir Dudeja

Ich bin kein Experte, aber haben Sie versucht, die Einstellung in ungefähr zu finden: config?

Wenn nicht, dann geben Sie about: config in das Eingabefeld ein und drücken Sie die Eingabetaste. Dort finden Sie viele Einstellungen und sagen Sie mir, ob Sie dort Einstellungen finden oder nicht.

Danke für den Vorschlag. Ich habe keine relevante Präferenz in `about: config` gefunden, aber ich habe auf einem anderen Computer nachgefragt als dem, den ich ursprünglich verwendete, als ich die Frage stellte und herausfand, dass ich tatsächlich eine solche Verknüpfung in Keyconfig auf diesem Computer (und Ich habe das nur durch das Anschauen von `about: config`) erkannt. Aus dieser alten Abkürzung habe ich meine Antwort produziert. ws_e_c421 vor 10 Jahren 0
0
ws_e_c421

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);