Javascript 如何知道在上下文菜单中单击了哪个元素?
我们开发了Chrome、Firefox和Safari的扩展。我们希望将上下文菜单添加到扩展中,当右键单击任何可编辑的表单元素时,将显示上下文菜单。我尝试向Chrome添加可编辑的上下文菜单: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.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];
}