Javascript 如何知道在上下文菜单中单击了哪个元素?

Javascript 如何知道在上下文菜单中单击了哪个元素?,javascript,jquery,google-chrome-extension,Javascript,Jquery,Google Chrome Extension,我们开发了Chrome、Firefox和Safari的扩展。我们希望将上下文菜单添加到扩展中,当右键单击任何可编辑的表单元素时,将显示上下文菜单。我尝试向Chrome添加可编辑的上下文菜单: chrome.contextMenus.create({ "title": "Test editable menu item", "contexts": ["editable"], "onclick": function(info, tab) { console.lo

我们开发了Chrome、Firefox和Safari的扩展。我们希望将上下文菜单添加到扩展中,当右键单击任何可编辑的表单元素时,将显示上下文菜单。我尝试向Chrome添加可编辑的上下文菜单:

chrome.contextMenus.create({
    "title": "Test editable menu item",
    "contexts": ["editable"],
    "onclick": function(info, tab) {
        console.log("item " + info.menuItemId + " was clicked");
        console.log("info: " + JSON.stringify(info));
        console.log("tab: " + JSON.stringify(tab));
    }
});
但是我需要知道用户单击了哪个元素,并且
info
tab
不包含该元素。如何知道用户单击了哪个元素?我想要一个包含元素的jQuery对象

info
对象包含以下属性:

"editable": true
"menuItemId"
"pageUrl"

据我所知,最好的解决方法之一是遵循本文中给出的建议,在“contextmenu”事件的目标页面中插入侦听器

我知道这对你来说太晚了,但我在这里为谷歌搜索的其他人回答

我的解决方案是在创建的菜单项和业务模型(在本例中为“数据”数组)之间创建映射:


请参阅中的“子问题1”,该问题符合仅链接的答案。请在此处包含建议的相关部分,您的摘要太短。相关片段:“使用内容脚本中的document.addEventListener(“contextmenu”,function…)”。您误解了问题。问题不是找出单击了哪个菜单项,而是上下文菜单调用的HTML元素是什么。
var itemsDic = {};
function onClickHandler(info) {
    alert(itemsDic[info.menuItemId]);
};

for(i in data) {
    var currentItem = chrome.contextMenus.create({
            parentId: item,
            title: data[i].ItemName,
            type: data[i].ItemType,
            contexts: ["editable"],
            onclick : onClickHandler
    });
    itemsDic[currentItem] = data[i];
}