CSAPP/src/preload.ts

87 lines
2.5 KiB
TypeScript
Raw Normal View History

2025-04-29 18:36:29 +08:00
// 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';
2025-04-29 18:36:29 +08:00
contextBridge.exposeInMainWorld('electronAPI', {
/**
*
* @returns
*/
getMenuCacheAsync: () => ipcRenderer.invoke('get-menu-cache') as Promise<ApiResponse<MenuItem[]>>,
/**
*
* @returns
*/
getConfigCacheAsync: () => ipcRenderer.invoke('get-config-cache') as Promise<ApiResponse<TagResolutionConfig[]>>,
/**
* URL的缩放比例
* @param url URL
* @returns
*/
getZoomFactorByUrl: (url: string) => ipcRenderer.invoke('get-zoom-factor-by-url', url) as Promise<number>,
/**
* URL
* @param callback webContentId和urlwebContentId是请求打开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<Electron.Display>,
/**
* 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);
2025-04-30 17:28:03 +08:00
},
/**
* sessionStorage
*/
clearSessionStorage: () => {
window.sessionStorage.clear();
}
});