2015-02-12 56 views
1

在我的分机我想隐藏/基于URL中的上下文菜单上显示的项目,我得到:Firefox扩展:获取点击数据时上下文菜单

  1. 从一个链接,如果用户在打开上下文菜单一个,
  2. 从选定的文本,也如果用户在文本上打开上下文菜单。

在功能显示/隐藏的项目在上下文菜单中我做以下检查:

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

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

有没有一种方法可以检测到用户使用右键点击的真正元素是什么?我怎么知道右键是否在选定的文字上?

回答

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.