Files
nl-game/electron/preload.cjs
2026-10-11 09:09:28 +08:00

31 lines
1.6 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// Electron 预加载脚本:以 contextBridge 向渲染进程暴露最小桌面端 API
// 前端凭 window.desktop 是否存在来区分「桌面端 / 浏览器」两种运行环境
const { contextBridge, ipcRenderer } = require('electron')
// 同步读取后端服务器地址:必须在页面脚本执行前就绪(axios/WS 初始化要用)
const serverBase = ipcRenderer.sendSync('nlg:get-server-base')
contextBridge.exposeInMainWorld('desktop', {
// 后端服务器地址(形如 http://127.0.0.1:8080,结尾不带斜杠)
serverBase,
// 修改服务器地址(校验通过后主进程会自动重载页面)
setServerBase: (url) => ipcRenderer.invoke('nlg:set-server-base', url),
// 检查桌面端新版本(silent=true 时已是最新版不弹窗,用于启动自动检查)
checkUpdate: (silent = false) => ipcRenderer.invoke('nlg:check-update', silent),
// 取消正在进行的更新下载
cancelUpdateDownload: () => ipcRenderer.invoke('nlg:cancel-update-download'),
// 切换屏幕模式:window 普通窗口 / windowFull 窗口全屏 / full 真全屏
setScreenMode: (mode) => ipcRenderer.invoke('nlg:set-screen-mode', mode),
// 订阅屏幕模式变化(Esc 退全屏、菜单 F11 等原生状态变化时同步),返回取消订阅函数
onScreenModeChanged: (cb) => {
const handler = (_e, mode) => cb(mode)
ipcRenderer.on('nlg:screen-mode-changed', handler)
return () => ipcRenderer.removeListener('nlg:screen-mode-changed', handler)
},
// 运行环境版本信息
versions: {
electron: process.versions.electron,
chrome: process.versions.chrome,
},
})