Electron:如何从默认菜单中删除菜单项?

kak*_*kyo 5 javascript menu node.js electron

目标

Help我正在尝试从 Electron 应用程序的菜单中删除菜单。

我不想setApplicationMenu自己这样做,因为使用默认菜单就可以了,除了帮助之外,它指向 Electron 自己的帮助页面。

尝试

我尝试了以下方法,但每种情况都失败了:

删除尾部项目,即帮助

var menu = Menu.getApplicationMenu();
menu.items.pop();
Run Code Online (Sandbox Code Playgroud)

使其不可见

var menu = Menu.getApplicationMenu();
for(var i=0; i<menu.items.length; i++) {
    if (menu.items[i].role == 'help') {
       menu.items[i].visible = false;
       break;
    }
}
Run Code Online (Sandbox Code Playgroud)

删除菜单

mainWindow.removeMenu();
Run Code Online (Sandbox Code Playgroud)

这在我的电子版本 10.1.0 的 macOS 上不起作用。

问题

怎么了?我应该创建一个模板吗?

Hun*_*ran 7

menuItem.visible 在 Electron 13 中不起作用。相反,我构建了一个没有帮助项的新菜单。

  const menu = Menu.getApplicationMenu()
  const items = menu?.items.filter((item) => item.role !== 'help')
  Menu.setApplicationMenu(Menu.buildFromTemplate(items))
Run Code Online (Sandbox Code Playgroud)


aab*_*leh 5

Menu.setApplicationMenu修改默认菜单后必须使用

const menu = Menu.getApplicationMenu(); // get default menu

menu.items.find((item) => item.role === "help").visible = false; // modify it

Menu.setApplicationMenu(menu); // set the modified menu
Run Code Online (Sandbox Code Playgroud)

注意:根据我的经验,如果在应用程序事件之前调用Menu.getApplicationMenu()它将返回nullready