我正在制作一个扩展程序,客户端在扩展程序中生成一些数据并将其保存在 localStorage
中的对象数组中,如下所示:
var list = [{},{newly added object}];
localStorage.setItem("data", JSON.stringify(links));
当客户端保存一些数据时,我想在Chrome的上下文菜单中显示新添加的对象。如果数组中有这么多对象,我每次写这个都很困难:
chrome.contextMenus.create({
id: "****",
title: "***",
contexts: ["all"]
});
chrome.contextMenus.onClicked.addListener(function(info, tab) {
if (info.menuItemId == "some-id") {
// do something
}
});
我该怎么做?任何有用的建议将不胜感激。
答案 0 :(得分:2)
每次拨打localStorage.setItem
时,您都可以使用类似Message Passing的内容来告诉后台页面更新上下文菜单的时间。然后,您可以使用chrome.contextMenus.create
或chrome.contextMenus.update
更新上下文菜单。
chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
chrome.contextMenus.create({
id: "****",
title: "***",
contexts: ["all"]
});
});
您还可以通过内容脚本和背景页面之间共享的chrome.storage.local.set
保存用户数据,然后您可以在backgorund页面中注册chrome.storage.onChanged
的事件处理程序,并更新上下文菜单处理程序内部。
chrome.storage.onChanged.addListener(function(changes, areaName) {
chrome.contextMenus.create({
id: "****",
title: "***",
contexts: ["all"]
});
});