我试图在单击按钮时从另一个Javascript
文件调用主进程的功能。代码如下:
main.js
const electron = require( 'electron')
const {app, BrowserWindow} = electron
const path = require('path')
app.on('ready', () => {
let win = new BrowserWindow({width:800,height:600})
win.loadURL(`file://${__dirname}/index.html`)
})
exports.openWindow = () => {
alert("Hello Javatpoint");
}
的index.html
<!doc html>
<html>
<head>
<title>
Test 1
</title>
</head>
<body>
<h1>Hello world</h1>
<script src="index.js"></script>
</body>
</html>
index.js
const main = require('electron').remote.require('./main')
var button = document.createElement('button')
button.textContent = 'Open'
button.addEventListener('click',() => {
main.openWindow()
}, false)
document.body.appendChild(button)
单击按钮时,应显示警告对话框。但它没有显示任何东西。我是电子新手。我想知道它不起作用的原因。请帮忙。
答案 0 :(得分:1)
代码有效且函数导出,唯一的错误是在主进程内部,alert函数不存在。你只能看一下控制台,你应该看到错误:
警报功能在主进程(main.js)中不可用,因为这不是渲染器进程。您可以使用exports.openWindow = () => {
// You should see this data on the console that
// starts electron, not in the JavaScript console of electron !
console.log("Hello Javatpoint");
};
更改提醒,该提示应该有效:
const {ipcMain} = require('electron');
ipcMain.on('open-window', (event, arg) => {
// prints "ping"
console.log(arg);
event.sender.send('open-window-response', 'pong');
})
在此过程中,您无法直接访问DOM功能。如上所述,要查看图形结果,您可以执行console.log以查看启动Electron Application的控制台上的字符串:
如果你想遵循标准,你可以使用电子的ipcMain和ipcRenderer:
<强> main.js 强>
const {ipcRenderer} = require('electron');
ipcRenderer.on('open-window-response', (event, arg) => {
// prints "pong" in the JS console (chromium)
console.log(arg);
});
var button = document.createElement('button');
button.textContent = 'Open';
button.addEventListener('click',() => {
ipcRenderer.send('open-window', 'ping');
}, false);
document.body.appendChild(button)
<强> index.js 强>
{{1}}