是否有显示和隐藏 Electron 应用程序的事件?

2022-01-10 00:00:00 electron javascript

我一直在寻找当 应用程序 显示或隐藏时的 Electron app 事件.我在文档中看到有 'browser-window-blur' 和 'browser-window-focus' 但是那些不做我想做的事.

I have been looking for Electron app events for when the application is shown or hidden. I see in the docs that there is 'browser-window-blur' and 'browser-window-focus' but those do not do what I want.

我想知道用户何时切换到另一个应用程序或切换回我的应用程序.如果用户在浏览器窗口(包括开发者工具"窗口)之间切换,则会触发上述事件.

I would like to know when the user has switched to another application or switched back to my app. The above events get triggered if the user switches between browser windows – including the "developer's tools" window.

main.js中的代码

app.on('browser-window-focus', () => {
    if (mainWindow) {
        console.log('browser-window-focus');

        mainWindow.webContents.send('projectMsg', { "event": "focus" });
    }
});

app.on('browser-window-blur', () => {
    console.log('browser-window-blur');
    if (mainWindow) {
        mainWindow.webContents.send('projectMsg', { "event": "blur" });
    }
});

推荐答案

在我看来和你描述的完全一样,所以可能要求不同.

It seems to me that it works exactly as you described, so maybe the requirements are different.

此代码

const {app, BrowserWindow} = require('electron')

app.on('browser-window-focus', (event, win) => {
  console.log('browser-window-focus', win.webContents.id)
})
app.on('browser-window-blur', (event, win) => {
  if (win.webContents.isDevToolsFocused()) {
    console.log('Ignore this case')
  } else {
    console.log('browser-window-blur', win.webContents.id)
  }
})
app.once('ready', () => {
  new BrowserWindow()
  new BrowserWindow().webContents.openDevTools({detach: true})
})

考虑到最初没有重点关注,以下列方式工作(在 3.0.3 中):

works the following way (in 3.0.3) given that nothing is focused initially:

  • 点击窗口 1 打印 browser-window-focus 1
  • 点击窗口 2 打印 browser-window-blur 1 browser-window-focus 2
  • 点击devtools窗口打印browser-window-blur 2 忽略这种情况
  • Clicking on window 1 prints browser-window-focus 1
  • Clicking on window 2 prints browser-window-blur 1 browser-window-focus 2
  • Clicking on devtools window prints browser-window-blur 2 Ignore this case

据我所知,这些事件中不包含 devtool,对于任何其他聚焦的窗口(包括 devtool),窗口会变得模糊

So as far as I see devtool is not included in these events, windows are getting blurred for any other window focused (including devtool)

相关文章