chrome.contextMenus
Description
使用 chrome.contextMenus
API 将项目添加到 Google Chrome 的上下文菜单。您可以选择添加上下文菜单的对象类型,例如图像、超链接和页面。
Permissions
contextMenus
# Usage(用法)
上下文菜单项可以出现在任何文档(或文档中的框架)中,即使是那些带有 file:// 或 chrome:// URL 的。要控制您的项目可以出现在哪些文档中,请在调用 create()
或 update()
方法时指定 documentUrlPatterns 字段。
您可以根据需要创建任意数量的上下文菜单项,但如果您的扩展程序中的多个项同时可见,Google Chrome 浏览器会自动将它们折叠到一个父菜单中。
# Manifest(清单)
您必须在扩展的清单中声明“contextMenus”权限才能使用 API。此外,您应该指定一个 16x16 像素的图标以显示在您的菜单项旁边。例如:
{
"name": "My extension",
...
"permissions": [
"contextMenus"
],
"icons": {
"16": "icon-bitty.png",
"48": "icon-small.png",
"128": "icon-large.png"
},
...
}
# Examples
您可以在示例页面上找到此 API 的示例。
Summary
Types
Properties
Methods
Events
Types
ContextType
Chrome 44+
菜单可以出现在不同的上下文中。指定 'all' 等同于除 'launcher' 之外的所有其他上下文的组合。“启动器(launcher)”上下文仅受应用程序支持,用于将菜单项添加到单击launcher/taskbar/dock/etc等中的应用程序图标时出现的上下文菜单中。不同的平台可能会限制启动器上下文菜单中实际支持的内容。
TYPE
"all", "page", "frame", "selection", "link", "editable", "image", "video", "audio", "launcher", "browser_action", "page_action", or "action"
ItemType
Chrome 44+
菜单项的类型。
TYPE
"normal", "checkbox", "radio", or "separator"
OnClickData
单击上下文菜单项时发送的信息。
PROPERTIES
checked
boolean optional
指示复选框或单选项在单击后的状态的标志。
editable
boolean
指示元素是否可编辑的标志(文本输入、文本区域等)。
frameId
number optional
Chrome 51+
单击上下文菜单的元素的框架的 ID(iframe id)(如果它在框架中)。
frameUrl
string optional
单击上下文菜单的元素的框架的 URL(如果它在框架中)。
linkUrl
string optional
如果元素是链接,则为它指向的 URL。
mediaType
string optional
如果在这些类型的元素之一上激活了上下文菜单,则为“图像”、“视频”或“音频”之一。
menuItemId
string | number
单击的菜单项的 ID。
pageUrl
string optional
单击菜单项的页面的 URL。如果单击发生在没有当前页面的上下文中,例如在启动器上下文菜单中,则不会设置此属性。
parentMenuItemId
string | number optional
单击的项目的父 ID(如果有)。
selectionText
string optional
上下文选择的文本(如果有)。
srcUrl
string optional
将出现在带有“src” URL 的元素中。
wasChecked
boolean optional
指示复选框或单选项在单击之前的状态的标志。
Properties
ACTION_MENU_TOP_LEVEL_LIMIT
可以添加到扩展操作上下文菜单中的顶级扩展项的最大数量。任何超出此限制的项目都将被忽略。
VALUE
6
Methods
create
chrome.contextMenus.create(
createProperties: object,
callback?: function,
)
创建一个新的上下文菜单项。如果在创建过程中发生错误,则可能直到创建回调触发才会检测到;详细信息将在 runtime.lastError
中。
PARAMETERS
createProperties
object
checked
boolean optional
复选框或单选按钮的初始状态:选中时为
true
,未选中时为false
。在给定的组中,一次只能选择一个单选按钮。contexts
[ContextType, ...ContextType[]] optional
此菜单项将出现的上下文列表。默认为
['page']
。documentUrlPatterns
string[] optional
将项目限制为仅应用于 URL 与给定模式之一匹配的文档或框架。有关模式格式的详细信息,请参阅匹配模式Match Patterns。
enabled
boolean optional
此上下文菜单项是启用还是禁用。默认为
true
。id
string optional
分配给此项的唯一 ID。活动页面必填。不能与此扩展程序的另一个 ID 相同。
parentId
string | number optional
父菜单项的 ID;这使该项目成为先前添加的项目的子项。
targetUrlPatterns
string[] optional
类似于
documentUrlPatterns
,基于img
、audio
、video
标签的src
属性和a
标签的href
属性进行过滤。title
string optional
要在项目中显示的文本;这是必需的,除非
type
是分隔符。当上下文是selection
时,在字符串中使用%s
来显示选定的文本。例如,如果此参数的值为“将'%s'
翻译为Pig Latin
”并且用户选择单词“cool”
,则选择的上下文菜单项为“将 'cool
' 翻译为Pig Latin
”。type
ItemType optional
菜单项的类型。默认为
normal
。visible
boolean optional
Chrome 62+
该项目是否在菜单中可见。
onclick
function optional
单击菜单项时回调的函数。活动页面不能使用这个;相反,他们应该为
contextMenus.onClicked
注册一个监听器。The
onclick
function looks like:(info: OnClickData, tab: Tab) => {...}
info
有关单击的项目和单击发生的上下文的信息。
tab
发生点击的选项卡的详细信息。平台应用程序不存在此参数。
callback
function optional
The
callback
parameter looks like:() => void
RETURNS
number | string
新创建的项目的 ID。
remove
chrome.contextMenus.remove(
menuItemId: string | number,
callback?: function,
)
删除上下文菜单项。
PARAMETERS
menuItemId
string | number
要删除的上下文菜单项的 ID。
callback
function optional
The
callback
parameter looks like:() => void
removeAll
chrome.contextMenus.removeAll(
callback?: function,
)
删除此扩展添加的所有上下文菜单项。
PARAMETERS
callback
function optional
The
callback
parameter looks like:() => void
update
chrome.contextMenus.update(
id: string | number,
updateProperties: object,
callback?: function,
)
更新先前创建的上下文菜单项。
PARAMETERS
id
string | number
要更新的项目的 ID。
updateProperties
object
要更新的属性。接受与
contextMenus.create
函数相同的值。checked
boolean optional
contexts
[ContextType, ...ContextType[]] optional
documentUrlPatterns
string[] optional
enabled
boolean optional
parentId
string | number optional
要成为此项的父项的项的 ID。注意:您不能将项目设置为成为其后代的子项。
targetUrlPatterns
string[] optional
title
string optional
type
ItemType optional
visible
boolean optional
Chrome 62+
该项目是否在菜单中可见。
onclick
function optional
The
onclick
function looks like:(info: OnClickData, tab: Tab) => {...}
info
Chrome 44+
tab
Chrome 44+
发生点击的选项卡的详细信息。平台应用程序不存在此参数。
callback
function optional
The
callback
parameter looks like:() => void
Events
onClicked
单击上下文菜单项时触发。
PARAMETERS
callback
function
The
callback
parameter looks like:(info: OnClickData, tab?: tabs.Tab) => void
info
tab
tabs.Tab optional
By.一粒技术服务