MenuItem
类: MenuItem
向原生应用程序菜单和上下文菜单添加项。
进程:主进程
有关示例,请参阅 Menu。
Electron 的内置类不能被用户代码继承。更多信息,请参阅常见问题解答。
new MenuItem(options)
acceleratorWorksWhenHidden 被指定为仅适用于 macOS,因为在 Windows 和 Linux 上,加速器始终在项隐藏时工作。该选项提供给用户是为了让他们可以选择关闭它,因为在原生 macOS 开发中这是可能的。
角色
角色允许菜单项具有预定义的行为。
最好为与标准角色匹配的任何菜单项指定 role,而不是尝试在 click 函数中手动实现行为。内置的 role 行为将提供最佳的原生体验。
当使用 role 时,label 和 accelerator 值是可选的,并且将默认为适合每个平台的适当值。
每个菜单项都必须具有 role、label,或者在分隔符的情况下具有 type。
role 属性可以有以下值
- undo
- about- 触发原生关于面板 (Windows 上是自定义消息框,它不提供自己的)。
- redo
- cut
- copy
- paste
- pasteAndMatchStyle
- selectAll
- delete
- 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 时,只有 label 和 accelerator 选项会影响菜单项。所有其他选项都将被忽略。小写 role,例如 toggledevtools,仍然受支持。
enabled 和 visibility 属性在 macOS 的顶层菜单项中不可用。
实例属性
以下属性在 MenuItem 实例上可用
menuItem.id
一个 string,指示项的唯一 ID,此属性可以动态更改。
menuItem.label
一个 string,指示项的可见标签。
menuItem.click
当 MenuItem 收到点击事件时触发的 Function。它可以被调用为 menuItem.click(event, focusedWindow, focusedWebContents)。
- eventKeyboardEvent
- focusedWindowBaseWindow
- focusedWebContentsWebContents
menuItem.submenu
一个 Menu (可选),包含菜单项的子菜单(如果存在)。
menuItem.type
一个 string,指示项的类型。可以是 normal、separator、submenu、checkbox、radio、header 或 palette。
header 和 palette 仅在 macOS 14 及更高版本中可用。
menuItem.role
一个 string (可选),指示项的角色(如果设置)。可以是 undo、redo、cut、copy、paste、pasteAndMatchStyle、delete、selectAll、reload、forceReload、toggleDevTools、resetZoom、zoomIn、zoomOut、toggleSpellChecker、togglefullscreen、window、minimize、close、help、about、services、hide、hideOthers、unhide、quit、startSpeaking、stopSpeaking、zoom、front、appMenu、fileMenu、editMenu、viewMenu、shareMenu、recentDocuments、toggleTabBar、selectNextTab、selectPreviousTab、showAllTabs、mergeAllWindows、clearRecentDocuments、moveTabToNewWindow 或 windowMenu
menuItem.accelerator
一个 Accelerator (可选),指示项的加速器(如果设置)。
menuItem.userAccelerator 只读 macOS
一个 Accelerator | null,指示菜单项的 用户指定的加速器。
此属性仅在 MenuItem 已添加到 Menu 后初始化。可以通过 Menu.buildFromTemplate 或 Menu.append()/insert() 初始化。提前访问将只返回 null。
menuItem.icon
一个 NativeImage | string (可选),指示项的图标(如果设置)。
menuItem.sublabel
一个 string,指示项的副标题。
menuItem.toolTip macOS
一个 string,指示项的悬停文本。
menuItem.enabled
一个 boolean,指示项是否启用,此属性可以动态更改。
menuItem.visible
一个 boolean,指示项是否可见,此属性可以动态更改。
menuItem.checked
一个 boolean,指示项是否被选中,此属性可以动态更改。
checkbox 菜单项在被选中时会切换 checked 属性的开/关。
radio 菜单项在被点击时会打开其 checked 属性,并会关闭同一菜单中所有相邻项的该属性。
您可以添加一个 click 函数来实现额外的行为。
menuItem.registerAccelerator
一个 boolean,指示加速器是否应向系统注册或仅显示。
此属性可以动态更改。
menuItem.sharingItem macOS
一个 SharingItem,指示当 role 为 shareMenu 时要共享的项目。
此属性可以动态更改。
menuItem.commandId
一个 number,指示项的顺序唯一 ID。
menuItem.menu
该项所属的 Menu。