Как использовать скрипт предварительной загрузки в electron?

#javascript #node.js #security #electron

#javascript #node.js #Безопасность #electron

Вопрос:

В настоящее время я делаю следующее:

 //main.js

let window = new BrowserWindow (
    title: 'app',
    webPreferences: {
        preload: './preload.js'
    },
)

//preload.js 

window.teste = "hello"

//renderer.js

console.log(window.teste)
  

но я всегда получаю undefined, как будто все, что было сделано внутри предварительной загрузки (требуется и т.д.), Не имело глобальной области видимости или не могло быть доступно каким-либо образом

Комментарии:

1. что такое renderer.js ? куда вы его загружаете?

2. renderer.js это просто файл js, который я использую в своем html-файле

3. чтобы загрузить его, я просто использую <script src=»./renderer.js «><скрипт>

4. в вашем коде не указано, куда вы загружаете index.html

Ответ №1:

Сценарий предварительной загрузки выполняется в своем собственном контексте, как и код приложения, таким образом, window доступный для сценария предварительной загрузки не совпадает с window в контексте средства визуализации. Это функция безопасности, более подробную информацию можно найти в документации Electron.

Electron contextBridge можно использовать для представления объектов из скрипта предварительной загрузки в контекст средства визуализации. Вот пример:

 // preload.js
const { contextBridge } = require("electron");

contextBridge.exposeInMainWorld("teste", "hello");

//renderer.js

console.log(window.teste)
>>> "hello"