electron 有没有一种方法可以设置一个窗口对象属性,同时预加载电子版本26

xytpbqjk  于 6个月前  发布在  Electron
关注(0)|答案(1)|浏览(92)

我一直在尝试不同的解决方案,但都无济于事,我们的Electron应用程序重构到版本26。我们的旧版本的Electron是使用预加载脚本来设置窗口属性(功能)

window.testFunction = (channel, params) => {
  ipcRenderer.send(channel, params);
}

字符串
因此我们的嵌入式网站可以使用这些windows属性与Electron通信。
有了这个最新版本的Electron,据说在预加载脚本中使用contextBridge,以便在渲染器和main之间进行通信。我有contextIsolation = truenodeIntegration = false。有了这个,在预加载脚本中设置窗口属性不再起作用。我能够在main中使用executeJavascript()函数设置窗口属性(在渲染器dom-ready侦听器中显示),但在嵌入式网站中,似乎在DOM准备好之前就触发了该窗口属性函数。
有没有一种方法可以在渲染器执行之前预加载窗口属性?

kuarbcqp

kuarbcqp1#

正如here所述,将全局变量公开到窗口对象中的新方法是在预加载脚本中使用contextBridge API。
在你的例子中,preload.js会包含这样的内容:

const { contextBridge, ipcRenderer } = require('electron')

contextBridge.exposeInMainWorld('testFunction', (channel, params) => {
  ipcRenderer.send(channel, params)
})

字符串
然后你应该可以在渲染器中调用window.testFunction(channel, params)

相关问题