пользовательская строка меню не отображается на Mac?

#javascript #electron

#javascript #electron

Вопрос:

Разработчик menubar показывает вместо моей пользовательской строки меню, и я добавил пустой объект в menuTemplate и все еще не работает.

Я использую Mac

Я попытался установить меню окна браузера равным null
и все еще не показываю свой пользовательский menubar

 const electron = require('electron');
const{app,BrowserWindow,Menu} = electron;
const url = require("url");
const path = require("path")

let mainWindow;
let addWindow;
app.on('ready', function(){
  mainWindow = new BrowserWindow({});
  mainWindow.loadURL(url.format({
    pathname: path.join(__dirname, "index.html"),
    protocol: 'file: ',
    slashes: true
  }));

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

function createAddWindow(){
  addWindow = new BrowserWindow({
    width: 300,
    height: 200,
    title: " Add shopping list item"
  });
  addWindow.loadURL(url.format({
    pathname: path.join(__dirname, "subwindow.html"),
    protocol: 'file: ',
    slashes: true
  }));
}
// create menu template
const menuTemplate = [
  {},
  {
    Label: "file",
    submenu:[
      {
        Label: "add item",
        click(){
          createAddWindow();
        }
      },{
        Label: "clear items"
      },{
        label: "quit",
        accelerator: process.platform == "darwin" ? 'Command Q' : 'Ctrl Q',
        click(){
          app.quit();
        }
      }]
  }
]
  

Я хочу показать свой пользовательский menubar .

Ответ №1:

Ваш шаблон меню вызывает у меня ошибки при запуске (Electron 4.1.3 на Ubuntu).

Я удалил пустой объект с индексом 0 и изменил его Label на label . Кроме того, я думаю, вы можете просто использовать CmdOrCtrl для ускорителя.

 const menuTemplate = [
  {
    label: "file",
    submenu: [
      {
        label: "add item",
        click(){
          createAddWindow();
        }
      },{
        label: "clear items"
      },{
        label: "quit",
        accelerator: 'CmdOrCtrl Q',
        click(){
          app.quit();
        }
      }]
  }
]
  

В результате появляется следующее меню:

Скриншот меню

Комментарии:

1. Да, смотрите скриншот, который я добавил к ответу.

2. я сделал именно то, что вы сказали, и все еще показываю строку меню разработчика

3. Я попробовал этот код на своем компьютере с Windows, и он ничего не показывает, даже строку меню разработчика

4. Какую версию Electron вы используете? Вы используете именно код из вопроса?

5. Да, я использую 4.1.2v