// See the Electron documentation for details on how to use preload scripts: // https://www.electronjs.org/docs/latest/tutorial/process-model#preload-scripts import { contextBridge, ipcRenderer } from 'electron'; import { ApiResponse, MenuItem, TagResolutionConfig } from './EIAC_Desktop_Api'; contextBridge.exposeInMainWorld('electronAPI', { /** * 获取菜单缓存 * @returns 菜单缓存 */ getMenuCacheAsync: () => ipcRenderer.invoke('get-menu-cache') as Promise>, /** * 获取配置缓存 * @returns 配置缓存 */ getConfigCacheAsync: () => ipcRenderer.invoke('get-config-cache') as Promise>, /** * 获取指定URL的缩放比例 * @param url 要获取缩放比例的URL * @returns 缩放比例 */ getZoomFactorByUrl: (url: string) => ipcRenderer.invoke('get-zoom-factor-by-url', url) as Promise, /** * 在新标签页打开URL * @param callback 回调函数,参数为webContentId和url。其中webContentId是请求打开URL的webview的id。 */ onOpenTab: (callback: (webContentId: number, url: string) => void) => { ipcRenderer.on('webview-new-window', (_event, webContentId, url) => callback(webContentId, url)); }, /** * 获取当前屏幕的缩放比例和分辨率 * @returns 缩放比例和分辨率 */ getPrimaryDisplay: () => ipcRenderer.invoke('get-primary-display') as Promise, /** * 检查URL是否可用 * @param url 要检查的URL * @returns 是否可用 */ checkUrlAvailable: (url: string) => ipcRenderer.invoke('check-url-available', url), /** * 设置webview的cookie * @param url 要设置cookie的URL * @param cookie cookie字符串 */ setWebviewCookie: (url: string, cookie: string) => ipcRenderer.invoke('set-webview-cookie', url, cookie), /** * 按键将值设置到sessionStorage * @param key 键 * @param value 值 */ setSessionStorage: (key: string, value: string) => { window.sessionStorage.setItem(key, value); }, /** * 从sessionStorage中获取指定键的值 * @param key 键 * @returns 值 */ getSessionStorage: (key: string) => { return window.sessionStorage.getItem(key); }, /** * 从sessionStorage中删除指定键的值 * @param key 键 */ removeSessionStorage: (key: string) => { window.sessionStorage.removeItem(key); }, /** * 清空sessionStorage */ clearSessionStorage: () => { window.sessionStorage.clear(); } });