菜单¶
类:Menu¶
创建应用程序菜单和上下文菜单。
进程:主进程
菜单的呈现方式因操作系统而异:
- 在 Windows 和 Linux 上,菜单在视觉上与 Chromium 类似。
- 在 macOS 上,这些将是原生菜单。
[!TIP] 另请参阅:关于如何在应用中实现菜单的详细指南。
[!WARNING] Electron 的内置类不能在用户代码中被继承。 有关更多信息,请参阅常见问题解答。
new Menu()¶
创建一个新的菜单。
静态方法¶
Menu 类具有以下静态方法:
Menu.setApplicationMenu(menu)¶
menuMenu | null
在 macOS 上将 menu 设置为应用程序菜单。在 Windows 和 Linux 上,
menu 将被设置为每个窗口的顶部菜单。
在 Windows 和 Linux 上,你还可以在顶级项名称中使用 & 来指示哪个字母应获得生成的加速键。例如,为文件菜单使用
&File 会生成一个 Alt-F 加速键,用于打开关联菜单。按钮标签中指定的字符会带有下划线,并且按钮标签上不会显示 & 字符。
若要转义项名称中的 & 字符,请在其前面添加一个 &。例如,&&File 会在按钮标签上显示为 &File。
传入 null 将抑制默认菜单。在 Windows 和 Linux 上,
这还会产生从窗口中移除菜单栏的效果。
[!NOTE] 如果应用未设置默认菜单,则会自动创建默认菜单。 它包含
File、Edit、View和Window等标准项。
Menu.getApplicationMenu()¶
返回 Menu | null - 如果已设置,则为应用程序菜单;如果未设置,则为 null。
[!NOTE] 返回的
Menu实例不支持动态添加或移除菜单项。实例属性 仍然可以动态修改。
Menu.sendActionToFirstResponder(action) macOS¶
actionstring
将 action 发送到应用程序的第一响应者。这用于模拟 macOS 的默认菜单行为。通常,你会使用
MenuItem 的 role 属性。
有关 macOS 原生操作的更多信息,请参阅 macOS Cocoa 事件处理指南。
Menu.buildFromTemplate(template)¶
template(MenuItemConstructorOptions | MenuItem)[]
返回 Menu
通常,template 是用于构造 MenuItem 的 options 数组。用法可参考上文。
你还可以将其他字段附加到 template 的元素上,它们将成为所构造菜单项的属性。
实例方法¶
menu 对象具有以下实例方法:
menu.popup([options])¶
optionsObject(可选)windowBaseWindow(可选)- 默认值为当前聚焦的窗口。frameWebFrameMain(可选)- 如果你希望某些操作系统级功能(例如 macOS 上的 Writing Tools)正常工作,请提供相关的 frame。通常,这应该是 WebContents 上context-menu事件 的params.frame,或 WebContents 的focusedFrame属性。xnumber(可选)- 默认值为当前鼠标光标位置。 如果声明了y,则必须声明此项。ynumber(可选)- 默认值为当前鼠标光标位置。 如果声明了x,则必须声明此项。positioningItemnumber(可选)macOS - 在指定坐标下位于鼠标光标下方的菜单项索引。默认值为 -1。sourceTypestring(可选)Windows Linux - 这应映射到context-menu事件提供的menuSourceType。不建议手动设置此值,只提供从其他 API 接收到的值,或将其保留为undefined。 可以是none、mouse、keyboard、touch、touchMenu、longPress、longTap、touchHandle、stylus、adjustSelection或adjustSelectionReset。callbackFunction(可选)- 菜单关闭时调用。
在 BaseWindow 中弹出此菜单作为上下文菜单。
[!TIP] 有关更多详细信息,请参阅上下文菜单指南。
menu.closePopup([window])¶
windowBaseWindow(可选)- 默认值为当前聚焦的窗口。
关闭 window 中的上下文菜单。
menu.append(menuItem)¶
menuItemMenuItem
将 menuItem 追加到菜单。
menu.getMenuItemById(id)¶
idstring
返回 MenuItem | null - 具有指定 id 的项
menu.insert(pos, menuItem)¶
posIntegermenuItemMenuItem
将 menuItem 插入到菜单的 pos 位置。
实例事件¶
使用 new Menu 创建或由 Menu.buildFromTemplate 返回的对象会发出以下事件:
[!NOTE] 某些事件仅在特定操作系统上可用,并会相应标注。
事件:'menu-will-show'¶
返回:
eventEvent
在调用 menu.popup() 时发出。
事件:'menu-will-close'¶
返回:
eventEvent
当弹出菜单被手动关闭或通过 menu.closePopup() 关闭时发出。
实例属性¶
menu 对象还具有以下属性:
menu.items¶
包含菜单项的 MenuItem[] 数组。
每个 Menu 由多个 MenuItem 实例组成,并且每个 MenuItem 都可以将一个 Menu 嵌套到其 submenu 属性中。
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 el/electron