javascript - 如何更改 Electron 快速启动示例应用程序的 native 菜单

标签 javascript menu electron

Electron 应用程序打开时使用与 electron-quick-start 示例应用程序中出现的相同默认菜单以及如何更改它? 还尝试了 menu example on the docs但没有任何改变。 当我用 mainWindow.setMenu(null); 隐藏菜单时,菜单消失了,但仍然无法初始化新菜单

有什么想法吗?

平台:windows 7

Electron 版本:0.36.4

引用文件:

package.json:

{
  "name": "electric_timer",
  "version": "0.1.0",
  "description": "a Time sheet & project managment",
  "main": "app.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "repository": {
    "type": "git",
    "url": "none"
  },
  "author": "Eyal Ron",
  "license": "MIT"
}

应用程序.js:

var app = require('app');
var BrowserWindow = require('browser-window');

app.on('ready', function (){
  var mainWindow = new BrowserWindow({
    width: 800,
    height: 600
  });
  mainWindow.setMenu(null);
  mainWindow.loadUrl('file://' + __dirname + '/main.html');
});

主要.js:

var remote = require('remote');
var Menu = remote.require('menu');

var menu = Menu.buildFromTemplate([
  {
    label: 'Electron',
    submenu: [
      {
        label: 'Prefs',
        click: function(){
          alert('hello menu');
        }
      }
    ]
  }
]);
Menu.setApplicationMenu(menu);

main.html:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>electron test</title>
</head>
<body>
  <h1>hello world</h1>
  <script>requier('./main.js')</script>
</body>
</html>

最佳答案

Electron 的“default_app”sets the menu ;如果你想避免这种情况,你需要 Electron 直接启动你的应用程序,而不是通过默认应用程序(注意:如果你使用类似 electron . 的东西启动你的应用程序,你实际上启动了默认应用程序)。

Electron looks in its resource folder对于“app”、“app.asar”或“default_app”,因此为了直接启动您的应用程序,您需要将其复制或链接到 Electron 的资源文件夹中。

无论您如何启动您的应用程序,您都可以使用 Menu.setApplicationMenu 设置您的菜单——您可以在主进程中执行此操作,您不需要像示例中那样在渲染器中执行此操作。顺便说一下,您的 main.html 中有一个拼写错误(requier 而不是 require),因此如果这是您的实际代码,则表明您的 main.js 根本没有运行。

关于javascript - 如何更改 Electron 快速启动示例应用程序的 native 菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34840026/

相关文章:

html - 如何使 html 菜单文本从头到尾跨度 100%

javascript - 如何制作一个具有 2 个窗口的 Electron react 应用程序 - 一个普通的窗口和一个用于托盘的窗口

mysql - Angular 2 & Electron 离线数据

javascript - 在服务器上推送新版本后刷新客户端浏览器窗口

javascript - 说明 div 叠加层未显示在 li 图像上

python - 使用递归 Python 函数的嵌套 <ul><li> 导航菜单

npm - 窗口无法打开ElectronNET/Electron.NET应用程序

javascript - 在 JavaScript 中使用变量

javascript - React setState + 'prevState' 从哪里来?

jquery - CSS - z-index/绝对定位问题。链接后面需要一个 div