我正在尝试创建一个自定义菜单/标题栏,但我使用BrowserView将其添加到主BrowserWindow中,而不仅仅是使用BrowserWindow.loadURL()方法(出于某些原因)。
但是,当启用上下文隔离时,这似乎会导致加载预加载脚本时出现问题。
我所拥有的:
main.js
const mainWindow = new BrowserWindow({
frame: false,
webPreferences: {
nodeIntegration: false,
contextIsolation: true,
preload: path.join(__dirname, "preload.js")
}
})
const bView = new BrowserView();
bView.setBounds(//set my bounds);
bView.webContext.loadURL(path.join(__dirname, "menu.html"));
mainWindow.setBrowserView(bView);preload.js
const { remote } = require('electron')
window.mainWindow = remote.getCurrentWindow();在渲染器脚本中:
console.log(window.mainWindow); // undefined我想我理解为什么它是未定义的,但如果可能的话,我不清楚如何与渲染器进程共享主进程变量。
我已经尝试了上面提到的here (使用webFrame.executeJavaScript()),但似乎没有任何作用(我甚至不确定webFrame应该是什么)。
如果我只使用mainWindow.loadURL(filePath)加载menu.html,一切都很好,但这不是我想要做的。
发布于 2020-01-23 04:21:14
好吧,我想通了我的问题:
我在BrowserWindow中加载预加载脚本。我需要将它加载到BrowserView中,然后它才能工作。
https://stackoverflow.com/questions/59866014
复制相似问题