将子项添加到上下文菜单链接

时间:2013-02-11 18:41:35

标签: javascript google-chrome-extension contextmenu

我正在尝试为我的上下文菜单添加子项,但由于某种原因它不适合我。这是我的代码:

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编写。可能是我错过了什么。

目前,当点击链接时,只显示父母(而不是孩子)。

如果我的问题太“新手”,请提前致谢并对不起。 :)

2 个答案:

答案 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”])