Electron < 22.3.6 23.0.0-alpha.1 <= Electron < 23.2.3 24.0.0-alpha.1 <= Electron < 24.0.1 25.0.0-alpha.1 <= Electron < 25.0.0-alpha.2 这是一个上下文隔离绕过漏洞,在上下文隔离环境中,通常 Preload 脚本通过 contextBridge 将定义好的方法暴露给渲染进程使用,如果这些方法返回值为一个包含无...
}constguestId = ipcRendererInternal.sendSync('ELECTRON_GUEST_WINDOW_MANAGER_WINDOW_OPEN', url, toString(frameName), toString(features));if(guestId !=null) {returngetOrCreateProxy(guestId); }else{returnnull; } };if(shouldUseContextBridge) internalContextBridge.overrideGlobalValueWithDynamicPropsFromIsol...
以上方式就是通过contextBridge.exposeInMainWorld将preload.js中的myAPI数据共享给渲染进程的网页使用。 官网详细介绍:流程模型 | Electron 2 初始化项目 2.1 使用electron-vite新建项目 找个合适的目录,执行项目创建命令。 npm命令: npm create @quick-start/electron yarn命令: yarn create @quick-start/electron pnp...
clipboard:在系统剪贴板上执行复制和粘贴操作。 contextBridge:在隔离的上下文中创建一个安全的、双向的、同步的桥梁。 crashReporter:将崩溃日志提交给远程服务器 desktopCapturer:访问关于使用navigator.mediaDevices.getUserMedia API 获取的可以用来从桌面捕获音频和视频的媒体源的信息。 ipcRenderer:从渲染器进程到主进程的...
}constguestId = ipcRendererInternal.sendSync('ELECTRON_GUEST_WINDOW_MANAGER_WINDOW_OPEN', url, toString(frameName), toString(features));if(guestId !=null) {returngetOrCreateProxy(guestId); }else{returnnull; } };if(shouldUseContextBridge) internalContextBridge.overrideGlobalValueWithDynamicPropsFromIsol...
const { contextBridge, ipcRenderer } = require('electron'); contextBridge.exposeInMainWorld('electronApi', { invoke: (request) => ipcRenderer.invoke(request) }); 在main.js中: javascript const { app, BrowserWindow, ipcMain } = require('electron'); const axios = require('axios'); ip...
contextBridge IPC通信 src/main/index.ts src/preload/index.ts src/renderer/src/main.ts src/renderer/index.html src/renderer/src/assets/index.css src/renderer/src/App.tsx src/renderer/src/components/*.tsx package.json 配置项目窗口样式#为了...
contextBridge.exposeInMainWorld('service',{setTitle:(title)=>ipcRenderer.send('set-title',title)}) 执行API: 当API被暴露后就可以在渲染进程中通过window.service就获取到需要执行的API: 代码语言:javascript 复制 // eslint-disable-next-line @typescript-eslint/no-explicit-anyconstsetTitle=()=>(windo...
const { contextBridge, ipcRenderer } = require("electron"); // 使用contextBridge.exposeInMainWorld()方法将 // Function、String、Number、Array、Boolean、对象等 // 传递给渲染进程的window对象 contextBridge.exposeInMainWorld("myAPI", () => { setInterval(() => { ipcRenderer.send("renderer-send...
(__dirname,'../utils/contextBridge.js')},icon:path.resolve(__dirname,'../assets/logo.png')})if(isDevelopment){mainWindow.loadURL('http://localhost:8000/')}else{constentryPath=path.resolve(__dirname,'../../build/index.html')mainWindow.loadFile(entryPath)}mainWindow.once('ready...