我正在尝试为我的上下文菜单添加子项,但由于某种原因它不适合我。这是我的代码:
var parent1 = chrome.contextMenus.create({"title": "Trigger Rank", "contexts":["link"]});
var child1 = chrome.contextMenus.create
(
{"title": "Rank 1", "parentId": parent1, "onclick": genericOnClick}
);
var child2 = chrome.contextMenus.create
(
{"title": "Rank 2", "parentId": parent1, "onclick": genericOnClick}
);
var child2 = chrome.contextMenus.create
(
{"title": "Rank 3", "parentId": parent1, "onclick": genericOnClick}
);
var parent2 = chrome.contextMenus.create({"title": "Target Rank", "contexts":["link"]});
var child1 = chrome.contextMenus.create
(
{"title": "Rank 1", "parentId": parent2, "onclick": genericOnClick}
);
var child2 = chrome.contextMenus.create
(
{"title": "Rank 2", "parentId": parent2, "onclick": genericOnClick}
);
var child3 = chrome.contextMenus.create
(
{"title": "Rank 3", "parentId": parent2, "onclick": genericOnClick}
);
看起来很直接,但这是我的第一个chrome扩展,第一次用javascript编写。可能是我错过了什么。
目前,当点击链接时,只显示父母(而不是孩子)。
如果我的问题太“新手”,请提前致谢并对不起。 :)
答案 0 :(得分:2)
您的父项contexts
设置为["link"]
,但您的子项的默认contexts
为["page"]
。因此:
您必须将孩子的contexts
值设置为与父母的["link"]
值匹配。
答案 1 :(得分:0)
我刚刚遇到类似但不完全相同的情况。
我正在创建一个需要支持多个上下文(链接,页面,选择)的菜单,而子菜单只显示在页面上。
上面的答案是正确的,因为你必须定义你的上下文,因为它是一个可选的创建参数。尽管我仔细阅读了这份文件,但这是一个痛苦的发现:http://developer.chrome.com/extensions/contextMenus.html#method-create
上下文(“all”,“page”,“frame”枚举的可选数组, “选择”,“链接”,“可编辑”,“图像”,“视频”,“音频”或 “launcher”)此菜单项将出现的上下文列表。默认值 到['page']如果没有指定。指定['all']等同于 除了'发射器'之外的所有其他上下文的组合。该 “启动器”上下文仅受应用程序支持,用于添加菜单 单击应用程序图标时显示的上下文菜单中的项目 在启动器/任务栏/ dock / etc中。可能会有不同的平台 对启动器上下文菜单中实际支持的内容的限制。
要明确回答,这是您使用解决方案的代码:
var child1 = chrome.contextMenus.create
(
{"title": "Rank 1", "parentId": parent1, "onclick": genericOnClick, "contexts":["link"]}
);
var child2 = chrome.contextMenus.create
(
{"title": "Rank 2", "parentId": parent1, "onclick": genericOnClick, "contexts":["link"]}
);
var child2 = chrome.contextMenus.create
(
{"title": "Rank 3", "parentId": parent1, "onclick": genericOnClick, "contexts":["link"]}
);
在我自己的情况下,我支持多个上下文,所有需要在创建中加以考虑(例如“上下文”:[“page”,“link”,“selection”])