跳转到主要内容

Menu

类: Menu

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

进程: 主进程

警告

Electron 的内置类不能在用户代码中被继承。有关更多信息,请参阅 FAQ

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 字符串

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

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

  • template (MenuItemConstructorOptions | MenuItem)[]

返回 Menu

通常,template 是一个用于构造 MenuItemoptions 数组。用法如上所述。

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

实例方法

menu 对象具有以下实例方法

  • options Object (可选)
    • window BaseWindow (可选) - 默认情况下是聚焦的窗口。
    • frame WebFrameMain (可选) - 如果您希望某些 OS 级别的功能(例如 macOS 上的写作工具)正常工作,请提供相关的 frame。通常,这应该是来自 context-menu event 的 WebContents 的 params.frame,或者 WebContents 的 focusedFrame property
    • x 数字 (可选) - 默认情况下是当前的鼠标光标位置。如果声明了 y,则必须声明。
    • y 数字 (可选) - 默认情况下是当前的鼠标光标位置。如果声明了 x,则必须声明。
    • positioningItem 数字 (可选) macOS - 要在指定坐标处的鼠标光标下定位的菜单项的索引。默认值为 -1。
    • sourceType 字符串 (可选) Windows Linux - 这应该映射到 context-menu 事件提供的 menuSourceType。不建议手动设置此值,仅提供从其他 API 接收到的值或将其保留为 undefined。可以是 nonemousekeyboardtouchtouchMenulongPresslongTaptouchHandlestylusadjustSelectionadjustSelectionReset
    • callback 函数 (可选) - 在关闭菜单时调用。

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

提示

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

  • window BaseWindow (可选) - 默认情况下是聚焦的窗口。

关闭 window 中的上下文菜单。

menuItem 追加到菜单。

  • id string

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

menuItem 插入到菜单的 pos 位置。

实例事件

使用 new MenuMenu.buildFromTemplate 创建的对象会发出以下事件

注意

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

事件: 'menu-will-show'

返回

  • event Event

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

事件: 'menu-will-close'

返回

  • event Event

在手动或使用 menu.closePopup() 关闭弹出窗口时发出。

实例属性

menu 对象还具有以下属性

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

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