From 0ba2caea01a08359a392f3e38fc1a92bb6d45df5 Mon Sep 17 00:00:00 2001 From: wenyongda Date: Tue, 14 Apr 2026 11:14:39 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E6=A8=B1=E8=8A=B1=E7=89=B9=E6=95=88):=20?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=9C=AC=E5=9C=B0=E5=AD=98=E5=82=A8=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E4=BB=A5=E4=BF=9D=E5=AD=98=E7=94=A8=E6=88=B7=E5=81=8F?= =?UTF-8?q?=E5=A5=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加 localStorage 支持来持久化樱花特效的显示状态 修复首次加载时特效状态未正确应用的问题 --- source/js/sakura-toggle.js | 42 +++++++++++++++++++++++++++++++++++--- 1 file changed, 39 insertions(+), 3 deletions(-) diff --git a/source/js/sakura-toggle.js b/source/js/sakura-toggle.js index 5bc703b..e25c2a4 100644 --- a/source/js/sakura-toggle.js +++ b/source/js/sakura-toggle.js @@ -1,4 +1,27 @@ // 樱花特效切换按钮 - 添加到 rightside 设置区域 +const SAKURA_STORAGE_KEY = 'sakura_effect_enabled'; + +// 获取保存的状态,默认为 true(显示) +function getSakuraState() { + const saved = localStorage.getItem(SAKURA_STORAGE_KEY); + // 如果没有保存过,默认显示 + return saved === null ? true : saved === 'true'; +} + +// 保存状态到 localStorage +function saveSakuraState(enabled) { + localStorage.setItem(SAKURA_STORAGE_KEY, enabled.toString()); +} + +// 应用樱花特效状态 +function applySakuraState() { + const sakuraEffect = document.getElementById('canvas_sakura'); + if (sakuraEffect) { + const enabled = getSakuraState(); + sakuraEffect.style.display = enabled ? 'block' : 'none'; + } +} + function createSakuraBtn() { // 检查按钮是否已存在 if (document.getElementById('toggle_sakura_btn')) return; @@ -14,18 +37,31 @@ function createSakuraBtn() { hideArea.appendChild(sakuraBtn); } + // 应用保存的状态 + applySakuraState(); + // 点击切换 sakuraBtn.addEventListener('click', function() { const sakuraEffect = document.getElementById('canvas_sakura'); if (sakuraEffect) { const isHidden = window.getComputedStyle(sakuraEffect).display === 'none'; - sakuraEffect.style.display = isHidden ? 'block' : 'none'; + const newState = isHidden ? true : false; + sakuraEffect.style.display = newState ? 'block' : 'none'; + // 保存状态到 localStorage + saveSakuraState(newState); } }); } // 首次加载 -document.addEventListener('DOMContentLoaded', createSakuraBtn); +document.addEventListener('DOMContentLoaded', function() { + createSakuraBtn(); + // 确保 sakura.js 加载完成后应用状态 + setTimeout(applySakuraState, 100); +}); // PJAX 页面切换后重新创建 -document.addEventListener('pjax:complete', createSakuraBtn); \ No newline at end of file +document.addEventListener('pjax:complete', function() { + createSakuraBtn(); + applySakuraState(); +}); \ No newline at end of file