javascript - 如何在电子上使用预加载脚本?
问题描述
我目前正在执行以下操作:
//main.js
let window = new BrowserWindow (
title: 'app',
webPreferences: {
preload: './preload.js'
},
)
//preload.js
window.teste = "hello"
//renderer.js
console.log(window.teste)
但我总是不确定,好像在预加载(需要等)内完成的所有内容都没有全局范围或无法以任何方式访问
解决方案
预加载脚本和应用程序代码一样在它自己的上下文中运行,因此window
可用于预加载脚本的内容与window
渲染器上下文中的不同。这是一个安全特性,更多细节可以从Electron 文档中找到。
ElectroncontextBridge
可用于将对象从预加载脚本公开到渲染器上下文。这是一个例子:
// preload.js
const { contextBridge } = require("electron");
contextBridge.exposeInMainWorld("teste", "hello");
//renderer.js
console.log(window.teste)
>>> "hello"
推荐阅读
- azure - 从 PowerShell 并行向 Azure 存储队列发送消息
- sql - SQL中的TYPE和DOMAIN有什么区别
- mongodb - 如果 mongodb 中不存在,如何修改现有数据或创建新数据?
- input - Keras RNN 输入时间步长顺序
- java - 无法在android应用程序中运行测试
- tmb - 使用 TMB 对后验加权平均值
- arrays - Swift - 在具有多个变量的自定义类数组中查找最大值
- node.js - 如何解决我的项目中的以下竖琴错误?
- python - cl = NaiveBayesClassifier.train(trainTweets) AttributeError: 'list' object has no attribute 'items'
- sql-server - 不影响现有数据的 SQL Server 计算列