Chrome.contextMenus只有四种方法:
create
update
remove
removeAll我想知道如何检查是否已经创建了一个菜单?
我试过这个:
try {
chrome.contextMenus.update("byname", {});
} catch (e) {
// doesn't exist
}但是错误似乎不能被捕获(但在控制台中显示)。
谢谢你的各种建议!
发布于 2012-12-06 23:56:12
每个chrome.contextMenus.create调用都返回一个唯一的标识符。将这些标识符存储在数组或散列中以跟踪它们。
发布于 2019-01-10 18:30:53
基于Rob W.的建议,这是对任何有op问题的人的直接解决方案。这个想法是维护您自己的现有上下文菜单id列表。
通过使用这些包装器函数来维护上下文菜单项,还可以跟踪删除和更新(处理Fuzzyma的注释)。
用法就像Chrome自己的方法一样,例如。createContextMenu({id: "something"}, onclick)。这对我很管用。
let contextMenus = {}
// method to create context menu and keep track of its existence
function createContextMenu() {
if (arguments[0] && arguments[0].id) {
// TODO: not sure if this will work properly, is creation synchronous or asynchrounous?
// take in to account calll back and the runtime error?
chrome.contextMenus[arguments[0].id] = chrome.contextMenus.create.apply(null, arguments);
}
}
function updateContextMenu() {
if (arguments[0] && contextMenus[arguments[0]]) {
chrome.contextMenus.update.apply(mull, arguments);
}
}
function removeContextMenu() {
if (arguments[0] && contextMenus[arguments[0]]) {
chrome.contextMenus.remove.apply(null, arguments);
contextMenus[arguments[0]] = undefined;
}
}
function contextMenuExists(id) {
return !!contextMenus[id];
}https://stackoverflow.com/questions/13747374
复制相似问题