代码之家  ›  专栏  ›  技术社区  ›  kakyo

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

  •  0
  • kakyo  · 技术社区  · 4 年前

    目标

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

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

    尝试

    我尝试了以下方法,但每次都失败了:

    删除尾部项目,即帮助

    var menu = Menu.getApplicationMenu();
    menu.items.pop();
    

    让它隐形

    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;
        }
    }
    

    删除菜单

    mainWindow.removeMenu();
    

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

    提问

    发生了什么?我应该创建一个模板吗?

    0 回复  |  直到 4 年前
        1
  •  5
  •   aabuhijleh    4 年前

    您必须使用 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
    

    注: :根据我的经验, Menu.getApplicationMenu() 会回来的 null 如果在应用程序之前调用 ready 事件

        2
  •  5
  •   Hung Tran    3 年前

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

      const menu = Menu.getApplicationMenu()
      const items = menu?.items.filter((item) => item.role !== 'help')
      Menu.setApplicationMenu(Menu.buildFromTemplate(items))