跳到主要内容

类:MenuItem

类:MenuItem

将项目添加到原生应用程序菜单和上下文菜单。

进程:主进程

请参阅 Menu 以获取示例。

new MenuItem(options)

  • options 对象
    • click 函数(可选) - 当单击菜单项时,将使用 click(menuItem, window, event) 调用。
    • role 字符串(可选) - 可以是 undoredocutcopypastepasteAndMatchStyledeleteselectAllreloadforceReloadtoggleDevToolsresetZoomzoomInzoomOuttoggleSpellCheckertogglefullscreenwindowminimizeclosehelpaboutserviceshidehideOthersunhidequitshowSubstitutionstoggleSmartQuotestoggleSmartDashestoggleTextReplacementstartSpeakingstopSpeakingzoomfrontappMenufileMenueditMenuviewMenushareMenurecentDocumentstoggleTabBarselectNextTabselectPreviousTabshowAllTabsmergeAllWindowsclearRecentDocumentsmoveTabToNewWindowwindowMenu - 定义菜单项的操作,当指定时,将忽略 click 属性。请参阅 角色
    • type 字符串(可选) - 可以是 normalseparatorsubmenucheckboxradio
    • label 字符串(可选)
    • sublabel 字符串(可选)
    • toolTip 字符串(可选)macOS - 此菜单项的悬停文本。
    • accelerator Accelerator(可选)
    • icon (NativeImage | 字符串)(可选)
    • enabled 布尔值(可选) - 如果为 false,则菜单项将显示为灰色且不可点击。
    • acceleratorWorksWhenHidden 布尔值(可选)macOS - 默认值为 true,当为 false 时,如果项目不可见,则将阻止加速器触发该项目。
    • visible 布尔值(可选) - 如果为 false,则菜单项将完全隐藏。
    • checked 布尔值(可选) - 仅应为 checkboxradio 类型菜单项指定。
    • registerAccelerator 布尔值(可选)Linux Windows - 如果为 false,则加速器不会向系统注册,但仍会显示。默认为 true。
    • sharingItem SharingItem(可选)macOS - 当 roleshareMenu 时要共享的项目。
    • submenu (MenuItemConstructorOptions[] | Menu)(可选) - 应为 submenu 类型菜单项指定。如果指定了 submenu,则可以省略 type: 'submenu'。如果该值不是 Menu,则将使用 Menu.buildFromTemplate 自动将其转换为一个。
    • id 字符串(可选) - 在单个菜单中唯一。如果已定义,则可以通过 position 属性将其用作对该项目的引用。
    • before 字符串数组(可选) - 在具有指定 id 的项目之前插入此项目。如果引用的项目不存在,则项目将插入到菜单的末尾。还表示相关菜单项应放置在与该项目相同的“组”中。
    • after 字符串数组(可选) - 在具有指定 id 的项目之后插入此项目。如果引用的项目不存在,则项目将插入到菜单的末尾。
    • beforeGroupContaining 字符串数组(可选) - 提供了一种方法,使单个上下文菜单可以在具有指定 id 的项目的包含组之前声明其包含组的放置位置。
    • afterGroupContaining 字符串数组(可选) - 提供了一种方法,使单个上下文菜单可以在具有指定 id 的项目的包含组之后声明其包含组的放置位置。

注意:acceleratorWorksWhenHidden 指定为仅限 macOS,因为在 Windows 和 Linux 上,当项目隐藏时,加速器始终有效。该选项公开给用户,让他们可以选择关闭它,因为这在原生 macOS 开发中是可能的。

角色

角色允许菜单项具有预定义的行为。

对于任何与标准角色匹配的菜单项,最好指定 role,而不是尝试在 click 函数中手动实现该行为。内置的 role 行为将提供最佳的原生体验。

使用 role 时,labelaccelerator 值是可选的,并且将默认为每个平台的相应值。

每个菜单项都必须具有 rolelabel 或在分隔符情况下为 type

role 属性可以具有以下值

  • 撤消
  • about - 触发本机关于面板(Windows 上的自定义消息框,不提供自己的)。
  • 重做
  • 剪切
  • 复制
  • 粘贴
  • 粘贴并匹配样式
  • 全选
  • 删除
  • minimize - 最小化当前窗口。
  • close - 关闭当前窗口。
  • quit - 退出应用程序。
  • reload - 重新加载当前窗口。
  • forceReload - 忽略缓存重新加载当前窗口。
  • toggleDevTools - 在当前窗口中切换开发者工具。
  • togglefullscreen - 在当前窗口上切换全屏模式。
  • resetZoom - 将聚焦页面的缩放级别重置为原始大小。
  • zoomIn - 将聚焦页面的缩放比例放大 10%。
  • zoomOut - 将聚焦页面的缩放比例缩小 10%。
  • toggleSpellChecker - 启用/禁用内置拼写检查器。
  • fileMenu - 整个默认“文件”菜单(关闭/退出)
  • editMenu - 整个默认“编辑”菜单(撤消、复制等)。
  • viewMenu - 整个默认“查看”菜单(重新加载、切换开发者工具等)。
  • windowMenu - 整个默认“窗口”菜单(最小化、缩放等)。

macOS 上提供了以下其他角色

  • appMenu - 整个默认“应用程序”菜单(关于、服务等)。
  • hide - 映射到 hide 操作。
  • hideOthers - 映射到 hideOtherApplications 操作。
  • unhide - 映射到 unhideAllApplications 操作。
  • showSubstitutions - 映射到 orderFrontSubstitutionsPanel 操作。
  • toggleSmartQuotes - 映射到 toggleAutomaticQuoteSubstitution 操作。
  • toggleSmartDashes - 映射到 toggleAutomaticDashSubstitution 操作。
  • toggleTextReplacement - 映射到 toggleAutomaticTextReplacement 操作。
  • startSpeaking - 映射到 startSpeaking 操作。
  • stopSpeaking - 映射到 stopSpeaking 操作。
  • front - 映射到 arrangeInFront 操作。
  • zoom - 映射到 performZoom 操作。
  • toggleTabBar - 映射到 toggleTabBar 操作。
  • selectNextTab - 映射到 selectNextTab 操作。
  • selectPreviousTab - 映射到 selectPreviousTab 操作。
  • showAllTabs - 映射到 showAllTabs 操作。
  • mergeAllWindows - 映射到 mergeAllWindows 操作。
  • moveTabToNewWindow - 映射到 moveTabToNewWindow 操作。
  • window - 子菜单是“窗口”菜单。
  • help - 子菜单是“帮助”菜单。
  • services - 子菜单是 "服务" 菜单。这仅用于应用程序菜单,并且同于 macOS 应用程序中上下文菜单中使用的“服务”子菜单,后者在 Electron 中未实现。
  • recentDocuments - 子菜单是“打开最近使用的文件”菜单。
  • clearRecentDocuments - 映射到 clearRecentDocuments 操作。
  • shareMenu - 子菜单是 共享菜单。还必须设置 sharingItem 属性以指示要共享的项目。

在 macOS 上指定 role 时,labelaccelerator 是唯一会影响菜单项的选项。所有其他选项都将被忽略。小写 role(例如 toggledevtools)仍然受支持。

注意:在 macOS 上的托盘中,顶级菜单项不可用 enabledvisibility 属性。

实例属性

以下属性在 MenuItem 的实例上可用

一个表示项目唯一 ID 的字符串,此属性可以动态更改。

一个表示项目可见标签的字符串

当 MenuItem 接收点击事件时触发的函数。它可以被调用为menuItem.click(event, focusedWindow, focusedWebContents)

一个(可选)包含菜单项子菜单的Menu,如果存在。

一个表示项目类型的字符串。可以是normalseparatorsubmenucheckboxradio

一个(可选)表示项目角色的字符串,如果设置。可以是undoredocutcopypastepasteAndMatchStyledeleteselectAllreloadforceReloadtoggleDevToolsresetZoomzoomInzoomOuttoggleSpellCheckertogglefullscreenwindowminimizeclosehelpaboutserviceshidehideOthersunhidequitstartSpeakingstopSpeakingzoomfrontappMenufileMenueditMenuviewMenushareMenurecentDocumentstoggleTabBarselectNextTabselectPreviousTabshowAllTabsmergeAllWindowsclearRecentDocumentsmoveTabToNewWindowwindowMenu

一个(可选)表示项目加速键的Accelerator,如果设置。

一个Accelerator | null,表示菜单项的用户分配的加速键

注意:此属性仅在MenuItem添加到Menu后初始化。可以通过Menu.buildFromTemplateMenu.append()/insert()添加。在初始化之前访问只会返回null

一个(可选)表示项目图标的NativeImage | string,如果设置。

一个表示项目子标签的字符串

一个表示项目悬停文本的字符串

一个表示项目是否启用的布尔值,此属性可以动态更改。

一个表示项目是否可见的布尔值,此属性可以动态更改。

一个表示项目是否选中的布尔值,此属性可以动态更改。

一个checkbox菜单项将在选中时切换checked属性的打开和关闭。

一个radio菜单项将在点击时打开其checked属性,并关闭同一菜单中所有相邻项目的该属性。

您可以添加一个click函数以实现其他行为。

一个布尔值,指示加速键是否应注册到系统或仅显示。

此属性可以动态更改。

一个SharingItem,表示当roleshareMenu时要共享的项目。

此属性可以动态更改。

一个表示项目顺序唯一 ID 的数字

项目所属的Menu