在我的扩展程序中,我想基于我得到的网址隐藏/显示上下文菜单中的项目:
在显示/隐藏上下文菜单中的项目的功能中,我执行以下检查:
if (gContextMenu.onLink) {
url = gContextMenu.target.href;
}
if (gContextMenu.isTextSelected) {
url = content.window.getSelection();
}
如果在页面中选择了某些文本,并且用户通过链接打开上下文菜单,则两个条件都为真。此外,如果选择了某些文本,并且用户在页面中的任何位置打开上下文菜单(通过选择或不选择),则isTextSelected
标志也为真。
有没有办法可以检测用户使用右键单击的真实元素是什么?如何知道右键单击是否在所选文本上?
答案 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.