Электронный браузер и предварительная загрузка JavaScript Проблемы - PullRequest
2 голосов
/ 11 февраля 2020

Я попробовал несколько версий через Electron Fiddle и не могу заставить электронный браузер работать с предварительно загруженным файлом javascript. Я следил за Electron BrowserView, не фиксирующим события мыши , Скрипт предварительной загрузки не загружается в electron@5.0.0 browserview и все остальное, что я мог прочитать в обзоре браузера и предварительно загрузить javascript. Я могу получить предварительно загруженный javascript для запуска из окна браузера, но не из браузера. Я перепробовал все варианты webpreferences и убедился, что пути правильные. Ничего. Мой вопрос: может ли кто-нибудь предоставить какой-нибудь скелетный код, который он получил для работы? Или намек на то, что я пытаюсь сделать, даже возможно. Вот часть кода, который я использовал. Как я упоминал ранее, он работает из окна браузера, но не из браузера, ничего не выводится на консоль. Спасибо.

Я бы хотел, чтобы это работало для Electron v8.0.0

main. js

const path = require('path');
const { BrowserView, BrowserWindow, app } = require('electron')

app.on('ready', () => {
  let win = new BrowserWindow({ width: 800, height: 600 });
  win.on('closed', () => { win = null });

  const view = new BrowserView();
  win.setBrowserView(view);
  view.setBounds({ x: 0, y: 0, width: 800, height: 600, 
     webPreferences: { devTools: true, contextIsolation: true, preload: path.join(app.getAppPath(), 'preload.js') } });
  view.webContents.loadURL('https://electronjs.org');
  view.webContents.openDevTools({mode:'undocked'});
});

preload. js

const { webFrame } = require('electron');

webFrame.executeJavaScript('window.foo = "foo";');
window.bar = 'bar';

document.addEventListener('DOMContentLoaded', () => {
 // Will log out 'undefined' since window.foo is only available in the main
 // context
  console.log(window.foo);

  // Will log out 'bar' since window.bar is available in this context
  console.log(window.bar);
});

1 Ответ

0 голосов
/ 02 марта 2020

Мне тоже потребовалось некоторое время ... Я использую электронный веб-пакет, на нем у меня есть следующая конфигурация конфигурации (вы, вероятно, можете добиться такой же настройки с голым веб-пакетом и дополнительными материалами):

"main": {
  "extraEntries": ["@/preload.js"]
}

и при создании браузера:

const view = new BrowserView({
  webPreferences: {
    preload: path.resolve(__dirname, 'preload.js'),
    #some other options
}})

скрипт предварительной загрузки сидит со всеми источниками для основного процесса (независимо от того, что вы для него настроили)

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