2013-02-11 82 views
2

我想为我的上下文菜单添加子项,但由于某种原因它不适用于我。这里是我的代码:将子项添加到上下文菜单链接

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

您的父母项目有contexts设置为["link"],但您的子项目的默认contexts["page"]。因此:

  • 当你右键点击一个链接,父母出现,但孩子没有,因为他们没有设置显示链接。
  • 当你右键点击链接以外的东西时,父母不会出现,所以孩子也不会显示。

您必须将您孩子的contexts值设置为与父母的["link"]值相匹配。

+0

你说得对。谢谢 :) – r3x 2013-02-12 08:21:21

0

我刚刚遇到了一个类似但不完全相同的情况。

我正在创建一个需要支持多个上下文(链接,页面,选择)的菜单,并且只显示了页面的子菜单。

上面的答案是正确的,因为您必须定义您的上下文,因为它是创建的可选参数。虽然我读的文档仔细,这是一个痛苦的发现:http://developer.chrome.com/extensions/contextMenus.html#method-create

上下文(“全部”,“网页”,“帧”, “选择”,“链接”的枚举的数组(可选),“编辑“,”图像“,”视频“,”音频“或 ”启动器“)此菜单项将出现的上下文列表。如果未指定,则默认 转换为['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”])

相关问题