Получить окно, документ и тело в Electron 5+ remote.BrowserWindow - PullRequest
3 голосов
/ 11 мая 2019

В настоящее время электрон 5.0 отказался от возможности использовать nativeWindowOpen с nodeIntegration, поэтому невозможно использовать ReactDOM.createPortal для document.body, возвращаемого window.open. Они не нашли обходного пути, и я попробовал все, что можно найти в других ответах, например:

  • IPC возвращает узел DOM на new remote.BrowserWindow, он не отправляет обратно действительный узел DOM для подключения к
  • webContents.executeJavascript с документом или телом (function(){ return window })() приводит к зависанию процесса

Я просто не могу сделать эквивалент с помощью BrowserWindow:

// this is what works in Electron 4 with a warning see https://github.com/electron/electron/pull/15193
const container = window.open("about:blank", "someuniqueid"); // window = current main window

const stylesheet = document.createElement('link');
stylesheet.rel = 'stylesheet';
stylesheet.href = document.querySelector('link').href; // document = current main window

container.document.body.appendChild(stylesheet);
// [... edited for brevity]
return createPortal(
  props.children(container), // children = render props, pass the window to the children
  container.document.body
)

ничто не может вернуть действительный узел DOM из созданного окна. require('electron') также не работает по понятным причинам (nodeIntegration всегда отключен)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...