Я пытаюсь создать пользовательское меню / строку заголовка, но я добавляю его в основное окно BrowserWindow, используя BrowserView, а не просто метод 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
Мне кажется, я понимаю, почему он не определен, но мне не ясно, как, если возможно, совместно использовать основную переменную процесса с процессом рендеринга.
Я пробовал то, что упоминалось здесь (с использованием webFrame.executeJavaScript()
), но это, похоже, ничего не делает (и я даже не уверен, что webFrame
должно быть).
Все работает нормально, если я просто загружаю меню. html с использованием mainWindow.loadURL(filePath)
, но я не хочу этого делать.