跳转到主要内容

Menu

类:Menu

创建原生应用程序菜单和上下文菜单。

进程:主进程

警告

Electron 的内置类不能被用户代码继承。更多信息,请参阅常见问题解答

new Menu()

创建一个新菜单。

静态方法

Menu 类具有以下静态方法

  • menu Menu | null

在 macOS 上将 menu 设置为应用程序菜单。在 Windows 和 Linux 上,menu 将被设置为每个窗口的顶部菜单。

在 Windows 和 Linux 上,您还可以在顶级项名称中使用 & 来指示哪个字母应获得生成的加速器。例如,为文件菜单使用 &File 会生成一个 Alt-F 加速器,该加速器会打开关联的菜单。按钮标签中指示的字符将带有下划线,并且 & 字符不会显示在按钮标签上。

为了转义项名称中的 & 字符,请在其前面加上另一个 &。例如,&&File 将在按钮标签上显示 &File

传递 null 将会隐藏默认菜单。在 Windows 和 Linux 上,这还会从窗口中移除菜单栏。

注意

如果应用程序没有设置菜单,则会自动创建默认菜单。它包含标准的项,如 FileEditViewWindowHelp

返回 Menu | null - 如果设置了应用程序菜单,则返回该菜单;如果未设置,则返回 null

注意

返回的 Menu 实例不支持动态添加或删除菜单项。实例属性仍可动态修改。

  • action string

action 发送到应用程序的第一个响应者。这用于模拟 macOS 的默认菜单行为。通常,您会使用 MenuItemrole 属性。

有关 macOS 原生操作的更多信息,请参阅 macOS Cocoa 事件处理指南

  • template (MenuItemConstructorOptions | MenuItem)[]

返回 Menu

通常,template 是用于构造 MenuItemoptions 数组。其用法可参考上方。

您还可以向 template 的元素添加其他字段,它们将成为构造的菜单项的属性。

实例方法

menu 对象具有以下实例方法

  • options Object (可选)
    • window BaseWindow (可选) - 默认是焦点所在的窗口。
    • frame WebFrameMain (可选) - 如果您希望某些操作系统级功能(如 macOS 上的书写工具)正常工作,请提供相关的 frame。通常,这应该是 WebContents 上的 context-menu 事件params.frame,或者是 WebContents 的 focusedFrame 属性
    • x number (可选) - 默认是当前鼠标光标位置。如果声明了 y,则必须声明 x
    • y number (可选) - 默认是当前鼠标光标位置。如果声明了 x,则必须声明 y
    • positioningItem number (可选) macOS - 在指定坐标下,该菜单项将被放置在鼠标光标下方。默认值为 -1。
    • sourceType string (可选) Windows Linux - 这应该映射到 context-menu 事件提供的 menuSourceType。不建议手动设置此值,仅提供从其他 API 收到的值或将其留空 undefined。可以设置为 nonemousekeyboardtouchtouchMenulongPresslongTaptouchHandlestylusadjustSelectionadjustSelectionReset
    • callback Function (可选) - 菜单关闭时调用。

将此菜单作为上下文菜单在 BaseWindow 中弹出。

提示

有关更多详细信息,请参阅 上下文菜单 指南。

  • window BaseWindow (可选) - 默认是焦点所在的窗口。

关闭 window 中的上下文菜单。

menuItem 追加到菜单。

  • id string

返回 MenuItem | null - 具有指定 id 的项

menuItem 插入到菜单的 pos 位置。

实例事件

使用 new Menu 创建的对象或 Menu.buildFromTemplate 返回的对象会发出以下事件

注意

某些事件仅在特定操作系统上可用,并已相应标记。

事件:'menu-will-show'

返回

  • event Event

在调用 menu.popup() 时发出。

事件:'menu-will-close'

返回

  • event Event

手动关闭弹出菜单或使用 menu.closePopup() 关闭弹出菜单时发出。

实例属性

menu 对象还具有以下属性

一个 MenuItem[] 数组,包含菜单的项。

每个 Menu 由多个 MenuItem 实例组成,每个 MenuItem 可以在其 submenu 属性中嵌套一个 Menu