电子主程序脚本是否有办法监听具有`postMessage`功能的页面发布的消息?

问题描述 投票:0回答:1

我想在电子脚本渲染器进程加载的页面脚本中使用标准的postMessage API函数。

我想在渲染器过程脚本中坚持使用Web API,因为该应用程序旨在在Electron和Web(在用户首选的Web浏览器中)上运行。我不想用postMessage或类似符号对源代码阅读器征税。

是否可以在Electron主过程脚本中侦听if(typeof electron != "undefined") ...函数生成的消息或脚本窗口调度的事件?这将使我能够在渲染器进程脚本中保持适当的备用-如果未在Electron中运行,则未处理的已发布消息也不会生成运行时错误。

到目前为止,我一直在使用postMessage加载以下预加载脚本,该脚本建立了我所追求的“通信桥”:

preload property of the webPreferences object being passed to BrowserWindow constructor

然后我可以将preload作为任何渲染器进程脚本的一部分进行,它基本上将导致渲染器进程将消息发送到主进程,并且上述过程由预加载脚本进行设置。

[理想情况下,如果可能的话,我希望避免使用预加载脚本,但是就像我说的那样,我根本不想在渲染器进程脚本中使用任何Electron API。如果我可以直接在主流程中收听由渲染器脚本“窗口”发布的消息或由其分发的事件,则可以消除对预加载脚本的需求。但是我不知道是否可行,阅读文档给我的印象是我正在盘旋,或者我已经用尽了其他选择。

javascript html electron w3c
1个回答
0
投票

不是直接的,但是您可以在浏览器窗口上预加载一个js片段,以便在渲染器进程上接收该消息并将其复制到ipcRenderer.send或调用中

© www.soinside.com 2019 - 2024. All rights reserved.