不同的浏览器窗口应该在电子js中有不同的菜单选项

时间:2017-12-13 05:11:04

标签: javascript node.js electron

我需要2个浏览器窗口一个是主窗口,另一个是子窗口我想设置子窗口 - 菜单不应该反映在主窗口上。

app.on('ready', function() {
  // Create new window
  // this assign the mainwindow variable as a browserwindow with 
  //      default parameter value which will take the entire page
  mainWindow = new BrowserWindow({});
  childWindow = new BroserWindow({});
  // Load html in window
  // the below function will load the html into the window using the 
  //Command pathname
  mainWindow.loadURL(url.format({
    pathname: path.join(__dirname, 'mainWindow.html'),
    protocol: 'file:',
    slashes: true
  }));
  childWindow.loadURL(url.format({
    pathname: path.join(__dirname, 'childWindow.html'),
    protocol: 'file:',
    slashes: true
  }));
  / /
  Quit app when closed
  mainWindow.on('closed', function() {
    app.quit();
  });
  // Build menu from template
  const mainMenu = Menu.buildFromTemplate(mainMenuTemplate);
  // Insert menu
  Menu.setApplicationMenu(mainMenu);
});
//here i need to set the menu option only to the child window 
//not the main window

2 个答案:

答案 0 :(得分:1)

我不确定你的要求,但我可以告诉你要在主窗口设置menuBar,在子窗口设置不同的menuBar

您可以使用win.setMenu(menu)执行此操作:

const mainWindowMenuBar  = Menu.buildFromTemplate(<Main window template>);
const childWindowMenuBar = Menu.buildFromTemplate(<Child window template>);

mainWindow.setMenu(mainWindowMenuBar);

childWindow.setMenu(childWindowMenuBar);

Docs

答案 1 :(得分:0)

您使用了 translate,如果没有明确定义菜单,它用于设置为每个窗口的顶部菜单。(请参阅文档 doc)。您可以使用 Menu.setApplicationMenu(mainMenu); 将菜单限制在 mainWindow 中。此后,由于您的 childWindow 没有定义 Menu,默认顶部菜单将出现在那里。