我目前正在做以下工作:
//main.js
let window = new BrowserWindow (
title: 'app',
webPreferences: {
preload: './preload.js'
},
)
//preload.js
window.teste = "hello"
//renderer.js
console.log(window.teste)
但我总是没有定义,就好像在预加载(requires等(中完成的所有事情都没有全局范围,或者无法以任何方式访问
预加载脚本和应用程序代码在自己的上下文中运行,因此可用于预加载脚本的window
与渲染器上下文中的window
不同。这是一个安全功能,更多详细信息可以从Electron文档中找到。
Electron的contextBridge
可用于将预加载脚本中的对象暴露给渲染器上下文。这里有一个例子:
// preload.js
const { contextBridge } = require("electron");
contextBridge.exposeInMainWorld("teste", "hello");
//renderer.js
console.log(window.teste)
>>> "hello"