javascript - Electron - 仅在主窗口上显示菜单

标签 javascript electron

我不熟悉在 Windows 上使用 Electron 编写程序。当我创建一个 menuTemplate 时,它会显示在我所有打开的窗口上。有没有办法只让菜单出现在我的 mainWindow 上? (不是在我创建的弹出窗口上)

Index.js

const electron = require('electron');

const { app, BrowserWindow, Menu } = electron;

let mainWindow;
let addWindow;

app.on('ready', () => {
  mainWindow = new BrowserWindow({});
  mainWindow.loadURL(`file://${__dirname}/main.html`);
  mainWindow.on('closed', () => app.quit());

  const mainMenu = Menu.buildFromTemplate(menuTemplate);
  Menu.setApplicationMenu(mainMenu);
});

function createAddWindow() {
  addWindow = new BrowserWindow({
    width: 300,
    height: 200,
    title: 'Add New Todo'
  });
  addWindow.loadURL(`file://${__dirname}/add.html`)
}

const menuTemplate = [
  {
    label: 'File',
    submenu: [
      {
        label: 'New Todo' ,
        click() { createAddWindow(); }
      },
      {
        label: 'Quit',
        accelerator: process.platform === 'darwin' ? 'Command+Q' : 'Ctrl+Q',
        click() {
          app.quit();
        }
      }
    ]
  }
];

if (process.platform === 'darwin') {
  menuTemplate.unshift({});
}

最佳答案

Menu.setApplicationMenu(mainMenu); 更改为 mainWindow.setMenu(mainMenu)

Menu.setApplicationMenu所有 BrowserWindows 设置菜单,而win.setMenu 仅为调用它的窗口设置菜单。

关于javascript - Electron - 仅在主窗口上显示菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44589328/

相关文章:

javascript - 从JS发送数据到Controller中的函数,并从函数中获取结果

javascript - 构造函数也可以称为函数表达式吗?

javascript - 这个正则表达式有什么作用(/"([^"]+(? ="))"/g, '$1' )?

jquery - Bootstrap : Uncaught TypeError: Cannot read property 'fn' of undefined

electron - 在 Electron 中调试Worker线程

node.js - 错误: Cannot find module\node_modules\sqlite3\lib\binding\electron-v8. 0-win32-x64\node_sqlite3.node'

node.js - Electron process.dev配置不起作用?

JavaScript 全局日志记录

ruby - 使用 child_process 从 io.js 运行/安装 ruby​​ gem

javascript - createElementNS 如何工作?