Firefox扩展:在上下文菜单中获取点击数据

时间:2015-02-12 00:15:26

标签: javascript firefox contextmenu

在我的扩展程序中,我想基于我得到的网址隐藏/显示上下文菜单中的项目:

    如果用户打开上下文菜单,则从链接
  1. 如果用户在文本上打开上下文菜单,则从所选文本中
  2. 在显示/隐藏上下文菜单中的项目的功能中,我执行以下检查:

    if (gContextMenu.onLink) {
       url = gContextMenu.target.href;
    }     
    if (gContextMenu.isTextSelected) {
       url = content.window.getSelection();
    }         
    

    如果在页面中选择了某些文本,并且用户通过链接打开上下文菜单,则两个条件都为真。此外,如果选择了某些文本,并且用户在页面中的任何位置打开上下文菜单(通过选择或不选择),则isTextSelected标志也为真。

    有没有办法可以检测用户使用右键单击的真实元素是什么?如何知道右键单击是否在所选文本上?

1 个答案:

答案 0 :(得分:0)

首先,有gContextMenu.target,其中包含光标下的Node(如果有的话)(在极少数情况下可能是null)。

gContextMenu代码实际为uses gContextMenu.target to initialize things like .onLink

至于检查焦点节点是否实际包含在当前选择中,您可以在焦点文档上使用.getSelection().containsNode()

var isFocusedNodeInCurrentSelection = false;
var selection = gContextMenu.focusedWindow &&
  gContextMenu.focusedWindow.getSelection();
if (selection) {
  isFocusedNodeInCurrentSelection =
    selection.containsNode(gContextMenu.target, true);
}
// Do something with that information.