簡體   English   中英

是否有顯示和隱藏 Electron 應用程序的事件?

[英]Are there events for when an Electron app is shown and hidden?

我一直在尋找何時顯示或隱藏應用程序的Electron app事件。 我在文檔中看到有'browser-window-blur''browser-window-focus'但這些都沒有做我想要的。

我想知道用戶何時切換到另一個應用程序或切換回我的應用程序。 如果用戶在瀏覽器窗口(包括“開發人員工具”窗口)之間切換,則會觸發上述事件。


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" });
    }
});

還有showhide ,盡管您必須使用win.show()win.hide()顯式顯示/隱藏應用程序才能觸發這些事件。

在我看來,它的工作原理與您描述的完全一樣,所以可能要求不同。

這段代碼

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 中):

  • 單擊窗口1打印browser-window-focus 1
  • 單擊窗口2打印browser-window-blur 1 browser-window-focus 2
  • 單擊 devtools 窗口打印browser-window-blur 2 Ignore this case

因此,據我所知,這些事件中不包含 devtool,對於任何其他聚焦的窗口(包括 devtool),窗口變得模糊

查看這些 BrowserWindow 的事件:

事件:'blur' :當窗口失去焦點時發出。

事件:'show' :在顯示窗口時發出。

例如:

app.once('ready', () => {
  let mainWindow = new BrowserWindow({show: false}) //Create main window
  mainWindow.on('show', () => {
    //Do something
  })
})

希望這有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM