调用主进程

时间:2017-08-13 07:03:19

标签: javascript html electron

我试图在单击按钮时从另一个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)

单击按钮时,应显示警告对话框。但它没有显示任何东西。我是电子新手。我想知道它不起作用的原因。请帮忙。

1 个答案:

答案 0 :(得分:1)

代码有效且函数导出,唯一的错误是在主进程内部,alert函数不存在。你只能看一下控制台,你应该看到错误:

Error Electron

警报功能在主进程(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的控制台上的字符串:

Console Log Electron Main Process

正确的继续进行方式

如果你想遵循标准,你可以使用电子的ipcMainipcRenderer

<强> 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}}