#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"