电子JS.设置窗口名称或标识发出事件的窗口



有没有办法使用 ipcRenderer 识别发出事件的窗口,以便订阅此窗口侦听外部事件? 事件处理程序如下所示:

_registerListener(event, {windowName, id, eventName}) {
this._ems[id].on(eventName, (value)=>{
this._windows[windowName].webContents.send(eventName, value);
});
}

我发现的部分解决方案是在 WebRenderer 上下文中设置窗口的名称属性。 我发现的唯一方法是在创建BrowserWindow时使用executeJavaScript方法:

mainWindow.webContents.executeJavaScript("window.name='mainWindow';");

但是这个解决方案对我不起作用,因为传递给此方法的脚本是在 HTML 标头中链接的脚本之后执行的。

有没有其他方法可以选择浏览器窗口名称或识别一个?

谢谢。

找到了解决方案。我们可以通过其 webContent 来识别窗口。 Electron ipcEvent 具有字段sender,它代表窗口的 webContent。 所以就我而言,解决方案是像这样关闭:

_registerListener(event, {id, eventName}) {
this._ems[id].on(eventName, (value)=>{
event.sender.webContents.send(eventName, value);
});
}

最新更新