я не эксперт, но вы пытались найти настройки в about: config?
если нет, то введите about: config в поле адреса и нажмите Enter, там вы найдете множество настроек и скажите мне, есть ли там какие-либо настройки или нет.
Я пытаюсь изменить сочетание клавиш для отображения контекстного меню в Firefox (эквивалент нажатия Shift-F10
в Linux или Windows или Control-Space
в OS X). Кажется, что этот ярлык обрабатывается на другом уровне, чем обычные сочетания клавиш (он не отображается в расширении Keyconfig, которое позволяет переназначить большинство сочетаний клавиш).
Я попытался создать события клавиш и мыши, чтобы вызвать контекстное меню (используя следующий код, который сопоставлен с ярлыком с помощью Keyconfig), но они до сих пор не работали. Я не смог отследить, где в исходном коде Firefox обрабатывает сочетание клавиш для контекстного меню или есть ли одна функция, которую я мог бы вызвать, чтобы показать ее.
Событие мыши:
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);
Ключевое событие:
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);
я не эксперт, но вы пытались найти настройки в about: config?
если нет, то введите about: config в поле адреса и нажмите Enter, там вы найдете множество настроек и скажите мне, есть ли там какие-либо настройки или нет.
Я обнаружил, что этот же вопрос был задан ранее на MozillaZine здесь . Это решение помещает контекстное меню в верхний левый угол экрана. Я попытался использовать решение, данное для этого другого вопроса о получении позиций экрана DOM, для создания кода ниже, который помещает контекстное меню ближе к активному элементу, но оно все еще глючит (иногда меню немного отличается от элемента):
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);