首页 > 解决方案 > 如何在电子上使用预加载脚本?

问题描述

我目前正在执行以下操作:

//main.js

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

//preload.js 

window.teste = "hello"

//renderer.js

console.log(window.teste)

但我总是不确定,好像在预加载(需要等)内完成的所有内容都没有全局范围或无法以任何方式访问

标签: javascriptnode.jssecurityelectron

解决方案


预加载脚本和应用程序代码一样在它自己的上下文中运行,因此window可用于预加载脚本的内容与window渲染器上下文中的不同。这是一个安全特性,更多细节可以从Electron 文档中找到。

ElectroncontextBridge可用于将对象从预加载脚本公开到渲染器上下文。这是一个例子:

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

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

//renderer.js

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

推荐阅读