Javascript 从Electron中的渲染器进程访问主窗口中的函数

Javascript 从Electron中的渲染器进程访问主窗口中的函数,javascript,electron,Javascript,Electron,我正在应用程序中集成Skype web sdk对话控件。我有 背景中的主要过程 有一个主窗口(一个单独的渲染器进程) 通过单击主窗口可以打开聊天窗口(单独的渲染器进程) 在主窗口中,我初始化Skype Web SDK,登录用户,然后获取联系人列表。现在,当我点击一个联系人时,它应该会打开单独的聊天窗口,并在此窗口中启动对话控件 主窗口中的skype呼叫看起来像 skypeWebApi.renderConversation(containerDivReference) skypeWebApi

我正在应用程序中集成Skype web sdk对话控件。我有

  • 背景中的主要过程
  • 有一个主窗口(一个单独的渲染器进程)
  • 通过单击主窗口可以打开聊天窗口(单独的渲染器进程)
在主窗口中,我初始化Skype Web SDK,登录用户,然后获取联系人列表。现在,当我点击一个联系人时,它应该会打开单独的聊天窗口,并在此窗口中启动对话控件

主窗口中的skype呼叫看起来像

skypeWebApi.renderConversation(containerDivReference)
skypeWebApi.renderConversation函数在主窗口渲染器进程中可用,containerDivReference在聊天窗口渲染器进程中可用

为了实现这一点,我将skypeWebApi引用传递给聊天窗口渲染器进程。但是,由于序列化,此处不提供renderConversation。所以它不起作用

有没有办法访问主窗口渲染器进程中的此函数

我试图用containerDiv引用将事件发送到主窗口,但也并没有成功。此外,这似乎不是一个非常干净的解决方案,因为有很多事件来来回回

现在我想实现的是两个独立的渲染器进程之间的通信

我还可以重新构造代码,在主进程中初始化SDK,并让这些渲染器进程(主窗口和聊天窗口)调用主进程中的函数


有帮助吗?

如果SDK需要访问DOM,您别无选择,只能在渲染器进程中加载并运行它。@VadimMacagon:我不能以任何方式在主进程中调用该函数吗?根据您的描述,该函数需要一个DOM节点,您无法将DOM节点从一个进程传递到另一个进程,因为它不会被正确序列化/反序列化。因此,似乎需要进行全面重新设计,因为初始化skype sdk并多次登录用户不会很好地进行wrt授权。您对术语的使用有点混乱。。作为窗口的主窗口也是一个渲染器进程。你指的是主进程还是一个窗口,你称之为主窗口?据我目前所知,您正在一个窗口中初始化skype web sdk。但根据您的要求,您需要跨windows访问它。?如果SDK需要访问DOM,您别无选择,只能在渲染器进程中加载并运行它。@VadimMacagon:我不能以任何方式在主进程中调用该函数吗?根据您的描述,该函数需要一个DOM节点,您无法将DOM节点从一个进程传递到另一个进程,因为它不会被正确序列化/反序列化。因此,似乎需要进行全面重新设计,因为初始化skype sdk并多次登录用户不会很好地进行wrt授权。您对术语的使用有点混乱。。作为窗口的主窗口也是一个渲染器进程。你指的是主进程还是一个窗口,你称之为主窗口?据我目前所知,您正在一个窗口中初始化skype web sdk。但根据您的要求,您需要跨windows访问它。。?