如何更改Firefox上下文菜单的键盘快捷键?

ws_e_c421

我正在尝试更改用于在Firefox中显示上下文菜单的键盘快捷方式(等效于Shift-F10在Linux或Windows或Control-SpaceOS 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);
ws_e_c421

我发现以前在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);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Visual Studio中更改键盘快捷键?

来自分类Dev

如何隐藏Qt主菜单键盘快捷键?

来自分类Dev

上下文菜单的键盘快捷键未为子级菜单项打开

来自分类Dev

如何更改终端机键盘快捷键?

来自分类Dev

Lubuntu菜单键盘快捷键

来自分类Dev

如何在Nautilus 3.4中更改键盘快捷键

来自分类Dev

如何使用键盘快捷键打开菜单?

来自分类Dev

Lubuntu菜单键盘快捷键

来自分类Dev

如何更改终端机键盘快捷键?

来自分类Dev

如何在Nautilus 3.4中更改键盘快捷键

来自分类Dev

上下文菜单中的键盘快捷键(Windows 10)

来自分类Dev

Firefox:更改/禁用默认键盘快捷键配置

来自分类Dev

如何在Firefox中设置书签的键盘快捷键?

来自分类Dev

如何禁止Firefox中的网站窃取键盘快捷键

来自分类Dev

如何更改终端中单行滚动的键盘快捷键?

来自分类Dev

如何隐藏Qt主菜单键盘快捷键?

来自分类Dev

如何显示我的Chrome扩展程序创建的上下文菜单选项的键盘快捷键?

来自分类Dev

如何修改Firefox的键盘快捷键?

来自分类Dev

在Microsoft Word中添加键盘快捷键以打开上下文菜单

来自分类Dev

如何更改Evolution的键盘快捷键?

来自分类Dev

Windows上的Chrome:是否有键盘快捷键打开上下文菜单?

来自分类Dev

如何使用键盘快捷键更改背景

来自分类Dev

如何更改VirtualBox键盘快捷键

来自分类Dev

如何在xubuntu中更改键盘快捷键?

来自分类Dev

上下文菜单和键盘快捷键在同一方法上返回不同的结果

来自分类Dev

如何更改Nano中的键盘快捷键?

来自分类Dev

如何更改全局热键/键盘快捷键?

来自分类Dev

如何定义文件上下文选项键盘快捷键?

来自分类Dev

VS Code 中的上下文键盘快捷键

Related 相关文章

热门标签

归档