menus.update()
语法
let updating = browser.menus.update(
id, // integer or string
updateProperties // object
)
参数
id
-
整数
或字符串
。要更新的项的 ID。 updateProperties
-
对象
。要更新的属性。与传递给menus.create()
的createProperties
对象相同,但不能设置id
。此外,icons
只能更改菜单命令,而不能更改顶级上下文菜单。顶级图标与扩展清单文件中声明的扩展主图标匹配。checked
可选-
布尔值
。复选框或单选按钮的初始状态:true
表示选中,false
表示未选中。在给定的单选按钮组中,一次只能选择一个单选按钮。 command
可选-
字符串
。描述用户点击该项时应采取的操作的字符串。识别的值是"_execute_browser_action"
:模拟点击扩展的浏览器操作,如果扩展有弹出窗口,则打开它(仅限清单 V2)"_execute_action"
:模拟点击扩展的操作,如果扩展有弹出窗口,则打开它(仅限清单 V3)"_execute_page_action"
:模拟点击扩展的页面操作,如果扩展有弹出窗口,则打开它"_execute_sidebar_action"
:打开扩展的侧边栏
有关详细信息,请参阅 manifest.json 键
commands
中特殊快捷方式的文档。当指定其中一个识别值时,点击该项不会触发
menus.onClicked
事件;而是触发默认操作,例如打开弹出窗口。否则,点击该项会触发menus.onClicked
,并且可以使用该事件来实现回退行为。 contexts
可选-
的menus.ContextType
数组
。此菜单项将显示的上下文的数组。如果省略此选项- 如果该项的父项设置了上下文,则该项将继承其父项的上下文
- 否则,该项将获得一个上下文数组 ["page"]。
documentUrlPatterns
可选-
字符串
的数组
。允许你限制该项仅适用于其 URL 与给定的 匹配模式 之一匹配的文档。这也适用于框架。 enabled
可选-
布尔值
。此菜单项是启用还是禁用。默认为true
。 icons
可选-
对象
。要在该项旁边显示的一个或多个自定义图标。自定义图标只能为出现在子菜单中的项设置。此属性是一个对象,其中包含每个提供的图标的一个属性:属性的名称应包含图标的大小(以像素为单位),路径相对于扩展根目录中的图标。浏览器尝试为普通显示选择一个 16x16 像素的图标,或为高密度显示选择一个 32x32 像素的图标。要避免任何缩放,你可以这样指定图标jsbrowser.menus.create({ icons: { 16: "path/to/geo-16.png", 32: "path/to/geo-32.png", }, });
或者,你可以指定一个 SVG 图标,它将按比例缩放
jsbrowser.menus.create({ icons: { 16: "path/to/geo.svg", }, });
注意:顶级菜单项使用清单中指定的 icons,而不是使用此键指定的图标。
id
可选-
字符串
。要分配给此项的唯一 ID。事件页面必须指定此属性。不能与该扩展的另一个 ID 相同。 onclick
可选-
函数
。点击菜单项时调用的函数。事件页面不能使用此属性:而是,它们应该为menus.onClicked
注册一个监听器。 parentId
可选-
整数
或字符串
。父菜单项的 ID;这会使该项成为先前添加的项的子项。注意:如果你创建了多个菜单项,则这些项将放置在子菜单中。子菜单的父项将用扩展的名称标记。 targetUrlPatterns
可选-
字符串
的数组
。类似于documentUrlPatterns
,但允许你根据锚标记的href
属性和 img/audio/video 标记的src
属性进行筛选。此参数支持任何 URL 方案,即使是通常不允许在匹配模式中使用的方案。 title
可选-
字符串
。要在该项中显示的文本。除非type
为 "separator",否则必须指定此属性。你可以在字符串中使用 "
%s
"。如果你在菜单项中这样做,并且在显示菜单时页面中选择了一些文本,则所选文本将被插入到标题中。例如,如果title
为 "将 '%s' 翻译成 Pig Latin" 并且用户选择了单词 "cool",然后激活菜单,则菜单项的标题将为:"将 'cool' 翻译成 Pig Latin"。如果标题包含一个与号 "&",则下一个字符将用作该项的访问键,并且不会显示与号。例外情况是
- 如果下一个字符也是与号:则将显示单个与号,并且不会设置访问键。实际上,"&&" 用于显示单个与号。
- 如果下一个字符是插值指令 "%s":则不会显示与号,也不会设置访问键。
- 如果与号是标题中的最后一个字符:则不会显示与号,也不会设置访问键。
仅第一个与号将用于设置访问键:后续的与号将不会显示,但也不会设置键。因此 "&A and &B" 将显示为 "A and B" 并将 "A" 设置为访问键。
type
可选-
。菜单项的类型:“normal”(普通)、“checkbox”(复选框)、“radio”(单选按钮)、“separator”(分隔符)。默认为“normal”。menus.ItemType
viewTypes
可选-
。显示菜单项的视图类型列表。默认为任何视图,包括没有extension.ViewType
viewType
的视图。 visible
可选-
boolean
。菜单项是否显示。默认为true
。
返回值
一个Promise
,如果更新成功,则以无参数的方式完成,如果更新失败,则以错误消息拒绝。
示例
此示例创建一个菜单项,然后在用户单击该菜单项时更新其标题
function onUpdated() {
console.log("item updated successfully");
}
function onError() {
console.log("error updating item:", browser.runtime.lastError);
}
browser.menus.create({
id: "do-not-click-me",
title: "Do not click this button",
contexts: ["all"],
});
browser.menus.onClicked.addListener((info, tab) => {
if (info.menuItemId === "do-not-click-me") {
let updating = browser.menus.update(info.menuItemId, {
title: "Do not click this button again",
});
updating.then(onUpdated, onError);
}
});
扩展示例
浏览器兼容性
BCD 表格仅在启用了 JavaScript 的浏览器中加载。
注意:此 API 基于 Chromium 的 chrome.contextMenus
API。此文档来自 Chromium 代码中的 context_menus.json
。