拓冰建站拓冰建站
首页 / 资讯中心 / 正文

Electron 如何用 windowStatePersistence 自动保存并恢复窗口的位置、大小与最大化状态?

Electron 如何用 windowStatePersistence 自动保存并恢复窗口的位置、大小与最大化状态【免费下载链接】electron:electron: Build cross-platform desktop apps with JavaScript, HTML, and CSS项目地址: https://gitcode.com/GitHub_Trending/el/electron如果你的 Electron 应用经常被用户拖动、缩放或最大化希望用户下次启动时窗口保持上次的状态可以使用 Electron 提供的 Window State Persistence窗口状态持久化功能它在应用重启后自动恢复窗口的坐标、尺寸和显示模式如最大化、全屏、kiosk并在状态变化时自动保存。该功能目前是实验特性文档标注_Experimental_API 同时提供在BaseWindow和BrowserWindow上用法完全一致BrowserWindow继承自BaseWindowBrowserWindowConstructorOptions继承自BaseWindowConstructorOptions。启用持久化name 与 windowStatePersistence 缺一不可启用方式是在窗口构造选项中把windowStatePersistence设为true并提供一个唯一的nameconst { app, BrowserWindow } require(electron) function createWindow () { const win new BrowserWindow({ name: main-window, width: 800, height: 600, windowStatePersistence: true }) win.loadFile(index.html) } app.whenReady().then(createWindow)这里的name是保存和读取窗口状态所用的标识注意它有几个约束name必须是窗口间唯一的。对应窗口销毁之前不能复用同一个name否则 Electron 会抛出错误name只是内部标识不是标题栏上展示给用户的窗口标题未提供name时windowStatePersistence不起作用当系统没有可用显示设备时该功能会自动禁用。配置生效后Electron 会自动完成以下事情来源docs/tutorial/window-state-persistence.md创建窗口时如果存在上一次保存的状态就恢复窗口的位置、大小和显示模式每当窗口状态位置、大小或显示模式发生变化时保存状态成功恢复状态后触发persisted-state-restored事件在多显示器环境或显示设置变化时自动适配恢复出的窗口状态。选择性持久化只记位置大小不记最大化状态如果想控制具体持久化哪些部分可以传一个对象而不是true。对象有两个字段定义见 docs/api/structures/window-state-persistence.mdboundsboolean可选是否持久化窗口位置和大小未指定时默认truedisplayModeboolean可选是否持久化显示模式fullscreen、kiosk、maximized 等未指定时默认true。例如只记忆位置与大小、不记忆最大化/全屏状态const { app, BrowserWindow } require(electron) function createWindow () { const win new BrowserWindow({ name: main-window, width: 800, height: 600, windowStatePersistence: { bounds: true // Save position and size (default: true) displayMode: false // Dont save maximized/fullscreen/kiosk state (default: true) } }) win.loadFile(index.html) } app.whenReady().then(createWindow)在这个配置下窗口会记住上次关闭时的位置和大小但无论上次关闭前是否处于最大化或全屏重启后都会以普通模式启动。验证状态是否恢复监听 persisted-state-restored 事件恢复是否成功可以通过persisted-state-restored事件确认。该事件在持久化状态恢复之后触发窗口状态包括 boundsx、y、height、width和 display modemaximized、fullscreen、kiosk。注意该事件只在windowStatePersistence于 BaseWindowConstructorOptions 或 BrowserWindowConstructorOptions 中启用时才会触发文档见 docs/api/base-window.md。清除已保存的状态clearPersistedState如果需要让窗口回退到默认构造参数例如用户手动重置布局可以用静态方法clearPersistedState按name清除保存的状态const { BrowserWindow } require(electron) // Clear saved state for a specific window BrowserWindow.clearPersistedState(main-window) // Now when you create a window with this name, // it will use the default constructor options const win new BrowserWindow({ name: main-window, width: 800, height: 600, windowStatePersistence: true })clearPersistedState(name)会移除此前保存的全部持久化信息包括窗口 bounds、display mode 以及 work area 信息。调用后重新创建同名窗口会使用构造选项中的默认值。另外如果传入的name为空或对应窗口的状态并不存在该方法会输出一条警告日志——这可以作为该 name 下没有已保存状态的判断依据。使用限制windowStatePersistence是实验特性API 可能随版本变化不提供窗口name时该选项无效且name不可在用窗口未销毁时重复使用没有可用显示设备时功能自动禁用persisted-state-restored事件仅在启用持久化时发出。更多 API 细节可参考windowStatePersistence 选项说明、WindowStatePersistence 对象结构、BaseWindow.clearPersistedState() 与 persisted-state-restored 事件。【免费下载链接】electron:electron: Build cross-platform desktop apps with JavaScript, HTML, and CSS项目地址: https://gitcode.com/GitHub_Trending/el/electron创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门