类:MenuItem
类:MenuItem
将项目添加到原生应用程序菜单和上下文菜单。
进程:主进程
请参阅 Menu
以获取示例。
new MenuItem(options)
注意:acceleratorWorksWhenHidden
指定为仅限 macOS,因为在 Windows 和 Linux 上,当项目隐藏时,加速器始终有效。该选项公开给用户,让他们可以选择关闭它,因为这在原生 macOS 开发中是可能的。
角色
角色允许菜单项具有预定义的行为。
对于任何与标准角色匹配的菜单项,最好指定 role
,而不是尝试在 click
函数中手动实现该行为。内置的 role
行为将提供最佳的原生体验。
使用 role
时,label
和 accelerator
值是可选的,并且将默认为每个平台的相应值。
每个菜单项都必须具有 role
、label
或在分隔符情况下为 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
时,label
和 accelerator
是唯一会影响菜单项的选项。所有其他选项都将被忽略。小写 role
(例如 toggledevtools
)仍然受支持。
注意:在 macOS 上的托盘中,顶级菜单项不可用 enabled
和 visibility
属性。
实例属性
以下属性在 MenuItem
的实例上可用
menuItem.id
一个表示项目唯一 ID 的字符串
,此属性可以动态更改。
menuItem.label
一个表示项目可见标签的字符串
。
menuItem.click
当 MenuItem 接收点击事件时触发的函数
。它可以被调用为menuItem.click(event, focusedWindow, focusedWebContents)
。
event
KeyboardEventfocusedWindow
BaseWindowfocusedWebContents
WebContents
menuItem.submenu
一个(可选)包含菜单项子菜单的Menu
,如果存在。
menuItem.type
一个表示项目类型的字符串
。可以是normal
、separator
、submenu
、checkbox
或 radio
。
menuItem.role
一个(可选)表示项目角色的字符串
,如果设置。可以是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
一个表示项目子标签的字符串
。
menuItem.toolTip
macOS
一个表示项目悬停文本的字符串
。
menuItem.enabled
一个表示项目是否启用的布尔值
,此属性可以动态更改。
menuItem.visible
一个表示项目是否可见的布尔值
,此属性可以动态更改。
menuItem.checked
一个表示项目是否选中的布尔值
,此属性可以动态更改。
一个checkbox
菜单项将在选中时切换checked
属性的打开和关闭。
一个radio
菜单项将在点击时打开其checked
属性,并关闭同一菜单中所有相邻项目的该属性。
您可以添加一个click
函数以实现其他行为。
menuItem.registerAccelerator
一个布尔值
,指示加速键是否应注册到系统或仅显示。
此属性可以动态更改。
menuItem.sharingItem
macOS
一个SharingItem
,表示当role
为shareMenu
时要共享的项目。
此属性可以动态更改。
menuItem.commandId
一个表示项目顺序唯一 ID 的数字
。
menuItem.menu
项目所属的Menu
。