Electron中的子窗口并不总是显示在顶部

时间:2016-08-01 23:44:48

标签: javascript electron

我正在尝试从主进程创建两个窗口。第二个窗口应始终显示在第一个窗口的顶部。在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一起使用。

4 个答案:

答案 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');