如何在两个条件下显示相同的上下文菜单项

时间:2012-07-24 21:13:12

标签: javascript firefox-addon contextmenu firefox-addon-sdk

如果用户右键单击选项,他们右键单击图像,我想在上下文菜单中显示一个菜单项。

目前我正在使用此代码但不幸的是,如果我右键单击用户所做选择的图像,则会显示菜单项两次

contextMenu.Item({
    label: contextMenuItemLabel,
    contentScriptFile: contextMenuItemContentScriptFiles,
    context: contextMenu.SelectionContext(),                
        onMessage: function (posted) { someFunction(posted) }               
});

contextMenu.Item({
    label: contextMenuItemLabel,
    contentScriptFile: contextMenuItemContentScriptFiles,
    context: contextMenu.SelectorContext("img"),
        onMessage: function (posted) { someFunction(posted) }
});

如果你知道的话,能不能告诉我目前的做法是什么 - 我花了很多时间在这上面。

感谢。

2 个答案:

答案 0 :(得分:2)

我不确定是否有更简单的方法,但您可以使用contentScript查看您是否在图片元素/节点和/或用户身上选择了文字。

var cm = require("context-menu");
cm.Item({
  label: "dfhdfg",
  contentScript: 'self.on("context", function (node) {' +
                 '  if(node.nodeName==="IMG"){'+
                 '      //do something to web page or post a message back to addon  '+
                 '  } '+
                 '  else if(window.getSelection().toString()!===""){'+
                 '      //do something to web page or post a message back to addon  '+
                 '  } '+                 
                 '});'
});

答案 1 :(得分:0)

我去了:

self.on("context", function (node, data) {
        return ((node.nodeName == "IMG") || 
                (getSelection().length) );
});

其中getSelection()是返回当前选择的函数。

感谢您的帮助。