mainWindow.webContents.send () не получен функцией ipcRenderer.on () - PullRequest
0 голосов
/ 17 июня 2019

В электронном файле main.js я хочу отправить событие из дочернего окна в главное окно. Я решил сделать это, отправив событие из childWindow в Main Process, а затем Main Process отправил событие в mainWindow.

ipcMain.on('submit-form-data', (event, data) => {

    if (data) {
        console.log('send data to main window')
        mainWindow.webContents.send('submitted-form', data)
    }

        childWindow.hide();
    })

childWindow успешно отправило данные формы в основной процесс. Но когда я хочу, чтобы основной процесс затем отправил эти данные в mainWindow, событие не регистрируется. Я понятия не имею, что я могу попытаться заставить это работать.

index.html в главном окне

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
  <title>Main Window</title>
  <script>
      var ipcRenderer = nodeRequire("electron").ipcRenderer;

      ipcRenderer.on("submitted-form", function (event, data) {
        alert('received data'); // this never gets called :(
      });
</script>

1 Ответ

0 голосов
/ 17 июня 2019

Это работает, вам нужно включить nodeIntegration в BrowserWindow и исправить импорт ipcRenderer:

app.js (Основной процесс)

const {app,BrowserWindow} = require("electron")
const url = require("url")
const path = require("path")

let mainWindow

app.on("ready", function() {
    mainWindow = new BrowserWindow({
        width: 500,
        height: 300,
        webPreferences: {
            nodeIntegration: true
        }
    })
    mainWindow.loadURL(url.format({
        pathname: path.join(__dirname, "index.html"),
        protocol: "file:",
        slashes: true
    }))

    mainWindow.toggleDevTools()

    setTimeout(() => {
        console.log("sending message from main process")
        mainWindow.webContents.send("submitted-form", "hello")
    }, 3000)
})

index.html (процесс рендеринга)

<!DOCTYPE html>
<html>
<body>
Index with renderer javascript
</body>
<script type="text/javascript">
    const { ipcRenderer } = require("electron")

    ipcRenderer.on("submitted-form", function (event, data) {
        console.log("received data", data)

        alert("received data")
    });
</script>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...