打开多个BrowserWindows的正确方法是什么?我这样做,到目前为止工作正常。最好是赢得一系列胜利?
let win;
function createWindow () {
for (i=0; i<loadNotes.notes.length; i++){
win = new BrowserWindow({
'x': loadNotes.notes[i].pos.x,
'y': loadNotes.notes[i].pos.y,
'width': loadNotes.notes[i].pos.width,
'height': loadNotes.notes[i].pos.height,
'frame': false});
win.setMenu(null);
win.loadURL(`file://${__dirname}/index.html?${loadNotes.notes[i].name}`);
//win.webContents.openDevTools()
}
win.on('close', () => {
})
win.on('closed', () => {
win = null
});
}
答案 0 :(得分:4)
这取决于您是否要使用win
的实例方法。如果没有,您可以保留您的代码。
只有一个建议,建议您为了获得最佳用户体验,优雅地展示您的窗户
win = new BrowserWindow({
....,
show: false})
...
win.loadURL(`file://${__dirname}/index.html?${loadNotes.notes[i].name}`)
win.once('ready-to-show', () => {
win.show()
})
答案 1 :(得分:3)
用于在电子中创建多窗口应用程序很容易。这里有一个nodejs模块,可以帮助您轻松创建多窗口应用程序。
只需执行以下命令即可安装此模块
npm install --save electron-window-manager
然后,在应用程序main.js(或您为应用程序选择的任何内容)中,需要模块,如下所示:
var windowManager = require('electron-window-manager');
在主要流程上,您可以像这样使用它:
const electron = require('electron');
const app = electron.app;
const windowManager = require('electron-window-manager');
// When the application is ready
app.on('ready', function(){
windowManager.init( ... );
// Open a window
windowManager.open('home', 'Welcome ...', '/home.html');
});
在渲染器过程中(在创建的窗口内),您可以像这样使用它:
var remote = require('remote');
var windowManager = remote.require('electron-window-manager');
// Create a new window
var win2 = windowManager.createNew('win2', 'Windows #2');
win2.loadURL('/win2.html');
win2.onReady( ... );
win2.open();
请继续查看模块代码并亲自了解它是如何工作的,没有任何魔法,但它一致且易于阅读。只需查看代码,就可以了。
这里有一个关于这个模块的完整指南,我希望它会有所帮助