'昂秀'电子浏览器窗口中需要的事件

时间:2017-07-18 11:52:32

标签: javascript events electron show

在Electron中我希望在显示浏览器窗口时在浏览器窗口中触发javascript函数。

我目前的代码如下:

main.js(主要流程)

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

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

myWin.show()

usbUpload.js(浏览器窗口)

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

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

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

2 个答案:

答案 0 :(得分:1)

您可以使用executeJavaScript从主进程直接调用渲染器进程中的javascript。结合BrowserWindow事件myWin.on('show', () => { myWin.webContents.executeJavaScript('validateFlights()') }) ,您可以执行以下操作:

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()
})

示例:

main.js

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

的index.html

tView->setStyleSheet("QTreeView::item:hover{background-color:rgb(255,255,255);}");

答案 1 :(得分:0)

在您的主要流程中,如果您的窗口已在后台打开,则可能需要使用win.show()focus event执行某些操作。像这样:

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