有没有办法使用 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);
});
}