在电子中我已经阅读了如何在index.html中包含菜单代码。但在我的应用程序中,我正在加载一个外部网站,并想知道如何做到这一点。
'use strict';
var electron = require('electron');
var app = electron.app;
var BrowserWindow = require('browser-window');
var Menu = require('menu');
var customMenu = require('./libs/custom-menu');
app.on('ready', function () {
var mainWindow = new BrowserWindow ({
width: 800,
height: 600
});
mainWindow.loadURL('https://www.example.com');
var template = customMenu.getTemplate();
var menu = Menu.buildFromTemplate(template);
Menu.setApplicationMenu(menu);
});
我无法控制mysite.net上提供的内容,因此如何在这种情况下使用正确的方式制作自定义菜单!我想我可以在app.js中做到这一点,但好奇这是否合适?
更新
如果有人好奇,这就是我如何处理它:
exports.getTemplate = function () {
var template = [
{
label: 'MyApp',
submenu: [
{
label: 'Sub Navigation',
click: function () {
console.log('test');
}
}
]
}
];
return template;
}
定制menu.js:
public class ClientVM
{
public ClientVM()
{
Appts = new List<Appt>();
Addresses = new List<Address>();
Comments = new List<Comment>();
Contracts = new List<Contract>();
Depts = new List<Dept>();
Phones = new List<Phone>();
Addr_Types = new List<SelectListItem>();
States = new List<SelectListItem>();
}
public int Id { get; set; }
[Required]
[StringLength(50)]
public string client_Name { get; set; }
public bool is_active { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual IList<Appt> Appts { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual IList<Address> Addresses { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual IList<Comment> Comments { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual IList<Contract> Contracts { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual IList<Dept> Depts { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual IList<Phone> Phones { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual IEnumerable<SelectListItem> Addr_Types { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual IEnumerable<SelectListItem> States { get; set; }
}
答案 0 :(得分:1)
您只需在主进程中使用Menu模块即可。实际上,Menu
无论如何都是主要过程模块的一部分,所以我认为这确实是使用它的“正确”方式。文档中的示例通过remote
调用它来演示通过渲染器设置菜单的可能性;但您可以直接从主流程调用Menu.setApplicationMenu()
。