在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()
是我想在显示浏览器窗口时执行的浏览器窗口中的函数。
有什么想法吗?
答案 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()
})