Где определяется внутренний веб-контент Electron? - PullRequest
1 голос
/ 07 января 2020

Я пытаюсь понять, как Electron загружает расширения. При трассировке кода я застреваю здесь :

const contents = webContents.create({

в пределах:

const { app, webContents, BrowserWindow } = require('electron')

const startBackgroundPages = function (manifest) {
  if (backgroundPages[manifest.extensionId] || !manifest.background) return

  let html
  let name
  if (manifest.background.page) {
    name = manifest.background.page
    html = fs.readFileSync(path.join(manifest.srcDirectory, manifest.background.page))
  } else {
    name = '_generated_background_page.html'
    const scripts = manifest.background.scripts.map((name) => {
      return `<script src="${name}"></script>`
    }).join('')
    html = Buffer.from(`<html><body>${scripts}</body></html>`)
  }

  const contents = webContents.create({
    partition: 'persist:__chrome_extension',
    type: 'backgroundPage',
    sandbox: true,
    enableRemoteModule: false
  })
  backgroundPages[manifest.extensionId] = { html: html, webContents: contents, name: name }
  contents.loadURL(url.format({
    protocol: 'chrome-extension',
    slashes: true,
    hostname: manifest.extensionId,
    pathname: name
  }))
}

Я хотел бы просто следуйте require, но я не нахожу в этом успеха. Мне также очень неясно, где / как заполняется содержимое модуля, так что это попытка отследить его таким образом.

1 Ответ

2 голосов
/ 07 января 2020

Большинство электронных кодов являются нативными кодами для создания привязки к хрому, а веб-контент также одинаков. В частности, здесь определяется webcobtents.create https://github.com/electron/electron/blob/49b47ee4edb6e90545ca56ed2d3c051437df9521/shell/browser/api/atom_api_web_contents.h#L95

Причина, по которой вы не можете увидеть, как она построена, заключается в том, что это собственные привязки, которые вы не можете легко просмотреть в контексте javascript.

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