Electron 中的 Child window 并不总是显示在顶部
Child window in Electron does not always show on top
我正在尝试从主进程创建两个 windows。第二个 window 应始终显示在第一个 window 之上。在 Electron website 上,我读到我必须创建一个 parent 和一个 child window 来执行此操作。
这是我的代码:
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);
当我启动程序时,它会创建两个 windows,但 child window 并不总是在最前面。当我关闭 parent window (win) 时,两个 windows 都关闭了。
如何使 child window 始终显示在顶部?
我在 Gnome 上使用 Fedora 24。
在 child-win 初始化后尝试使用 child.setAlwaysOnTop(true);
方法。
这里的问题是您在启动应用程序后直接显示 child window 并且在 ready-to-show 之后显示 parent window 所以 child 首先显示,parent 在 child 之上显示。
要让您的 child 显示在 parent window 之上,您需要这样做:
win.once('ready-to-show', () => {
win.show()
child.show()
})
并删除顶部的 child.show()
可以使用焦点。
win.on('focus',function(){
if(child!=null && child.isVisible()){
child.focus()
}
});
它将子项 window 设置在父项之上。
这就是您可以始终保持领先地位的方法window
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');
根据你的问题,我想你需要 windows 的对话框,而不是新的子 window
我正在尝试从主进程创建两个 windows。第二个 window 应始终显示在第一个 window 之上。在 Electron website 上,我读到我必须创建一个 parent 和一个 child window 来执行此操作。 这是我的代码:
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);
当我启动程序时,它会创建两个 windows,但 child window 并不总是在最前面。当我关闭 parent window (win) 时,两个 windows 都关闭了。 如何使 child window 始终显示在顶部? 我在 Gnome 上使用 Fedora 24。
在 child-win 初始化后尝试使用 child.setAlwaysOnTop(true);
方法。
这里的问题是您在启动应用程序后直接显示 child window 并且在 ready-to-show 之后显示 parent window 所以 child 首先显示,parent 在 child 之上显示。
要让您的 child 显示在 parent window 之上,您需要这样做:
win.once('ready-to-show', () => {
win.show()
child.show()
})
并删除顶部的 child.show()
可以使用焦点。
win.on('focus',function(){
if(child!=null && child.isVisible()){
child.focus()
}
});
它将子项 window 设置在父项之上。
这就是您可以始终保持领先地位的方法window
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');
根据你的问题,我想你需要 windows 的对话框,而不是新的子 window