'onShow' Electron 浏览器需要事件 window

'onShow' event needed in Electron browser window

在 Electron 中,当浏览器 window 显示时,我想在浏览器 window 中触发 javascript 函数。

我目前的代码如下:

main.js(主进程)

myWin = new BrowserWindow({ width: 1200, height: 400, show: false })

.... some time later and under certain circumstances ;-) ....

myWin.show()

usbUpload.js(浏览器Window)

function validateFlights() {
   ...blar...
}

this.addEventListener('onshow', () => {
    validateFlights()
})

ValidateFlights()是浏览器window中显示浏览器window时我要执行的函数。 有什么想法吗?

在您的主进程中,如果您的 window 已经在后台打开,您可能想对 win.show() and the focus event 做一些事情。像这样:

let win = new BrowserWindow({width: 800, height: 600})
win.on('onFocus', () => {
  win.show()
})

您可以使用 BrowserWindowexecuteJavaScript. Combined with 'show' 事件从主进程直接调用渲染器进程中的 javascript 您可以执行以下操作:

myWin.on('show', () => {
  myWin.webContents.executeJavaScript('validateFlights()')
})

示例:

main.js

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

app.once('ready', () => {
  let win = new BrowserWindow({show: false})
  win.once('show', () => {
    win.webContents.executeJavaScript('validateFlights()')
  })
  win.loadURL(path.resolve(__dirname, 'index.html'))
  win.show()
})

index.html

<html>
  <head>
    <script type="text/javascript">
      function validateFlights() {
        console.log('validated')
      }
    </script>
  </head>
  <body></body>
</html>