Итак, я следую этому учебнику , но я просто не могу получить сообщения для перехода по страницам и манипулировать DOM, чтобы создать список под ul
main. js
const electron = require('electron');
const url = require('url');
const path = require('path');
const {
app,
BrowserWindow,
Menu,
ipcMain
} = electron;
let mainWindow;
let addWindow;
//Listen for app to be ready
app.on('ready', function () {
//Create window
mainWindow = new BrowserWindow({});
//load html to window
mainWindow.loadURL(url.format({
pathname: path.join(__dirname, 'mainWindow.html'),
protocol: 'file:',
slashes: true,
webPreferences: {
nodeIntegration: true
}
}));
mainWindow.on('close', function () {
app.quit();
});
const mainMenu = Menu.buildFromTemplate(mainMenuTemplate);
Menu.setApplicationMenu(mainMenu);
});
//Handle create add window
function createAddWindow() {
addWindow = new BrowserWindow({
width: 300,
height: 200,
title: 'Add Shopping List Item',
webPreferences: {
nodeIntegration: true
}
});
addWindow.loadURL(url.format({
pathname: path.join(__dirname, 'addWindow.html'),
protocol: 'file:',
slashes: true,
}));
addWindow.on('close', function () {
addWindow = null;
});
}
ipcMain.on("item:add", function (e, item) {
console.log(ipcMain);
mainWindow.webContents.send('item:add', item);
addWindow.close();
});
//create menu template
const mainMenuTemplate = [{
label: 'File',
submenu: [{
label: 'Add item',
accelerator: process.platform == 'darwin' ? 'Command+A' : 'Ctrl+A',
click() {
createAddWindow();
}
},
{
label: 'Clear Items'
},
{
label: 'Quit',
accelerator: process.platform == 'darwin' ? 'Command+Q' : 'Ctrl+Q',
click() {
app.quit();
}
}
]
}];
if (process.platform == 'darwin') {
mainMenuTemplate.unshift({
label: 'Electron'
});
}
//Add developer tools if not in production
if (process.env.NODE_ENV !== 'production') {
mainMenuTemplate.push({
label: 'Dev Tools',
submenu: [{
label: 'Toogle Dev Tools',
accelerator: process.platform == 'darwin' ? 'Command+I' : 'Ctrl+I',
click(item, focusedWindow) {
focusedWindow.toggleDevTools();
}
},
{
role: 'reload'
}
]
});
}
mainWindow. js
const electron = require('electron');
const {
ipcRenderer
} = electron;
const ul = document.querySelector('ul');
ipcRenderer.on('item:add', function (e, item) {
console.log(456);
const li = document.createElement('li');
const itemText = document.createTextNode(item);
li.appendChild(itemText);
ul.appendChild(li);
});
mainwindow. html
<!DOCTYPE html>
<html>
<head>
<title>Calendário</title>
</head>
<body>
<h1>Calendário</h1>
<ul></ul>
<script type="application/javascrip" src="mainWindow.js"></script>
</body>
</html>
addWindow. js
const electron = require('electron');
const {
ipcRenderer
} = electron;
const form = document.querySelector('form');
form.addEventListener('submit', submitForm);
function submitForm(e) {
e.preventDefault();
console.log(567);
const item = document.querySelector('#item').value;
ipcRenderer.send('item:add', item);
}
addWindow. html
<!DOCTYPE html>
<html lang="en">
<head>
<title>Add Shopping list item</title>
</head>
<body>
<form id = 'fo'>
<div>
<label>Enter Item</label>
<input type='text' id='item' autofocus>
</div>
<button type='submit' id='but'>submit</button>
</form>
<script type="application/javascript" src="addWindow.js">
</script>
</body>
</html>
Я действительно не могу передать сообщение в другое окно. Я попытался изменить способ, которым я получаю форму, и изменить канал из прослушивателя событий, но ничего не происходит.