gpt4 book ai didi

javascript - 两个窗口之间的 Electron ipcRenderer 消息不起作用

转载 作者:行者123 更新时间:2023-11-30 14:23:24 40 4
gpt4 key购买 nike

我正在尝试将消息从模式发送回浏览器窗口,以便使用从模式返回的数据更新它。

模态有一个表格,当您点击一行时,行 ID 通过 ipcRenderer 消息发送,但消息似乎没有到达那里,因为控制台中没有记录任何内容。

我做错了什么?

浏览器窗口(渲染器)

const { remote } = require('electron');
const ipcRenderer = require("electron").ipcRenderer;

function openModal() {
let win = new remote.BrowserWindow({
parent: remote.getCurrentWindow(),
modal: true
})

win.webContents.openDevTools();
var theUrl = 'file://' + __dirname + '/modal.html'

win.loadURL(theUrl);
}

// Open the modal on button click
document.getElementById("button-search-open")
.addEventListener("click", () => {
openModal();
})

// Log the data received from the modal message
ipcRenderer.on('set-row-active-id', (e, args) => {
console.log(e, args); // Nothing is logged!
})

模态(渲染器)

 var ipcRenderer = require("electron").ipcRenderer;

// Add event listeners to all table rows
document.querySelectorAll('table tr')
.forEach(el => el.addEventListener("click", (e) => { rowClickHandler(e) }));

// Send the row id back to the broserwindow on row click
function rowClickHandler(e) {
let rowId = e.target.parentElement.dataset.id
ipcRenderer.send('set-row-active-id', rowId);
}

最佳答案

ipcRenderer.send用于发送消息到主进程。您想要的是通过 contents.send 将消息发送到特定的 webContents

由于您的模态窗口应该发送给它的父窗口,您可以使用 win.getParentWindow

// (Modal - Renderer)
const { remote, ipcRenderer } = require('electron')
// ...
function rowClickHandler() {
let rowId = e.target.parentElement.dataset.id
remote.getCurrentWindow().getParentWindow().send('set-row-active-id', rowId)
}

关于javascript - 两个窗口之间的 Electron ipcRenderer 消息不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52353912/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com