【问题标题】:How use a preload script on electron?如何在电子上使用预加载脚本?
【发布时间】:2020-08-18 19:36:27
【问题描述】:

我目前正在做以下事情:

//main.js

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

//preload.js 

window.teste = "hello"

//renderer.js

console.log(window.teste)

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

【问题讨论】:

  • 什么是 renderer.js?你在哪里加载它?
  • renderer.js 只是我在 html 文件中使用的 js 文件
  • 加载它我只是使用
  • 你的代码没有说明你在哪里加载 index.html

标签: javascript node.js security electron


【解决方案1】:

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

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

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

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

//renderer.js

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

【讨论】:

    猜你喜欢
    • 2016-07-06
    • 2022-01-04
    • 2016-09-16
    • 2022-08-23
    • 2020-07-03
    • 2021-03-28
    • 2017-05-28
    • 1970-01-01
    • 2019-09-16
    相关资源
    最近更新 更多