我们为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"
答案 0 :(得分:3)
我所知道的最好的解决方法之一是遵循此thread中给出的建议,使用content scripts在目标页面中为监听器注入' contextmenu'事件。
答案 1 :(得分:-2)
我知道这对你来说已经很晚了,但我在这里回答其他任何谷歌的人。
我的解决方案是在创建的菜单项和业务模型(在本例中为“数据”数组)之间创建映射:
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];
}