我正在尝试从主进程创建两个窗口。第二个窗口应始终显示在第一个窗口的顶部。在Electron website我已经读过,我必须创建一个父窗口和一个子窗口来执行此操作。 这是我的代码:
let win;
let child;
function createWindow(){
// Create the browser window.
win = new BrowserWindow({width: 1024, height: 768, show: false});
child = new BrowserWindow({parent: win});
child.show();
win.once('ready-to-show', () => {
win.show()
})
// and load the index.html of the app.
win.loadURL(`file://${__dirname}/index.html`);
// Emitted when the window is closed.
win.on('closed', () => {
win = null;
});
}
app.on('ready', createWindow);
当我启动程序时,它会创建两个窗口,但子窗口并不总是位于顶部。当我关闭父窗口(win)时,两个窗口都关闭。 如何让子窗口始终显示在顶部? 我将Fedora 24与Gnome一起使用。
答案 0 :(得分:3)
尝试在子获胜初始化后使用child.setAlwaysOnTop(true);
方法。
答案 1 :(得分:3)
这里的问题是,您在启动应用程序后立即显示子窗口,并在准备显示后显示父窗口,这样子级将首先显示,父级显示在子级的顶部。
要使您的孩子显示在父窗口的顶部,您需要执行以下操作:
win.once('ready-to-show', () => {
win.show()
child.show()
})
并删除顶部的child.show()
答案 2 :(得分:0)
您可以使用焦点。
SELECT MAX(sellingprice) FROM sellingdetails
ORDER BY id DESC
LIMIT 0, 4;
它将子窗口设置在父窗口的顶部。
答案 3 :(得分:0)
这就是您始终可以在顶部窗口执行的操作
const { remote } = require('electron');
stopScreenShareWin = new remote.BrowserWindow({
width: 400,
height: 40,
show:true,
alwaysOnTop:true,
frame: false,
titleBarStyle: 'hidden',
visibleOnAllWorkspaces:true ,
webPreferences: {
nodeIntegration: true
}
});
stopScreenShareWin.loadFile('calls/screenshare-overlay.html');