跳转至

菜单

类:Menu

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

进程:主进程

菜单的呈现方式因操作系统而异:

  • 在 Windows 和 Linux 上,菜单在视觉上与 Chromium 类似。
  • 在 macOS 上,这些将是原生菜单。

[!TIP] 另请参阅:关于如何在应用中实现菜单的详细指南。

[!WARNING] Electron 的内置类不能在用户代码中被继承。 有关更多信息,请参阅常见问题解答。

new Menu()

创建一个新的菜单。

静态方法

Menu 类具有以下静态方法:

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

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

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

传入 null 将抑制默认菜单。在 Windows 和 Linux 上, 这还会产生从窗口中移除菜单栏的效果。

[!NOTE] 如果应用未设置默认菜单,则会自动创建默认菜单。 它包含 File、Edit、View 和 Window 等标准项。

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

[!NOTE] 返回的 Menu 实例不支持动态添加或移除菜单项。实例属性 仍然可以动态修改。

  • action string

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

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

返回 Menu

通常,template 是用于构造 MenuItem 的 options 数组。用法可参考上文。

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

实例方法

menu 对象具有以下实例方法:

  • options Object(可选)
  • window BaseWindow(可选)- 默认值为当前聚焦的窗口。
  • frame WebFrameMain(可选)- 如果你希望某些操作系统级功能(例如 macOS 上的 Writing Tools)正常工作,请提供相关的 frame。通常,这应该是 WebContents 上 context-menu 事件 的 params.frame,或 WebContents 的 focusedFrame 属性。
  • x number(可选)- 默认值为当前鼠标光标位置。 如果声明了 y,则必须声明此项。
  • y number(可选)- 默认值为当前鼠标光标位置。 如果声明了 x,则必须声明此项。
  • positioningItem number(可选)macOS - 在指定坐标下位于鼠标光标下方的菜单项索引。默认值为 -1。
  • sourceType string(可选)Windows Linux - 这应映射到 context-menu 事件提供的 menuSourceType。不建议手动设置此值,只提供从其他 API 接收到的值,或将其保留为 undefined。 可以是 none、mouse、keyboard、touch、touchMenu、longPress、longTap、touchHandle、stylus、adjustSelection 或 adjustSelectionReset。
  • callback Function(可选)- 菜单关闭时调用。

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

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

  • window BaseWindow(可选)- 默认值为当前聚焦的窗口。

关闭 window 中的上下文菜单。

将 menuItem 追加到菜单。

  • id string

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

将 menuItem 插入到菜单的 pos 位置。

实例事件

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

[!NOTE] 某些事件仅在特定操作系统上可用,并会相应标注。

事件:'menu-will-show'

返回:

  • event Event

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

事件:'menu-will-close'

返回:

  • event Event

当弹出菜单被手动关闭或通过 menu.closePopup() 关闭时发出。

实例属性

menu 对象还具有以下属性:

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

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

本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 el/electron