From b56adcaf83bae7fb46b604b72f4e2df15c28493e Mon Sep 17 00:00:00 2001 From: cyfung1031 <44498510+cyfung1031@users.noreply.github.com> Date: Sat, 18 Jul 2026 04:41:07 +0900 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20=E4=BF=AE=E5=A4=8D=E4=BF=9D?= =?UTF-8?q?=E5=AD=98=E8=84=9A=E6=9C=AC=E6=94=B9=E5=90=8D=E5=90=8E=E6=B5=8F?= =?UTF-8?q?=E8=A7=88=E5=99=A8=E6=A0=87=E7=AD=BE=E9=A1=B5=E6=A0=87=E9=A2=98?= =?UTF-8?q?=E6=9C=AA=E5=90=8C=E6=AD=A5=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit document.title 的更新只在切换标签(activeUuid 变化)时触发,保存后 即使脚本名已改变,当前激活标签的浏览器标题仍停留在旧名称,直到用户 切换标签或刷新页面。现改为依赖已解析的 i18n 名称,保存后立即同步。 Co-Authored-By: Claude Sonnet 5 --- src/pages/options/routes/ScriptEditor/index.tsx | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/pages/options/routes/ScriptEditor/index.tsx b/src/pages/options/routes/ScriptEditor/index.tsx index 6d81ada46..5b85b4552 100644 --- a/src/pages/options/routes/ScriptEditor/index.tsx +++ b/src/pages/options/routes/ScriptEditor/index.tsx @@ -148,16 +148,18 @@ export default function ScriptEditor() { // eslint-disable-next-line react-hooks/exhaustive-deps }, [loadingList, params.uuid]); - // 激活标签 → 同步 URL + 标题 + const activeTab = useMemo(() => state.tabs.find((x) => x.uuid === state.activeUuid), [state.tabs, state.activeUuid]); + const activeTabScriptName = activeTab?.script && i18nName(activeTab.script); + + // 激活标签或其脚本数据变化(如保存后改名) → 同步 URL + 标题 useEffect(() => { if (!state.activeUuid) return; if (params.uuid !== state.activeUuid) { void navigate(`/script/editor/${state.activeUuid}`, { replace: true }); } - const tab = state.tabs.find((x) => x.uuid === state.activeUuid); - if (tab) document.title = `${i18nName(tab.script)} - Script Editor`; + if (activeTabScriptName) document.title = `${activeTabScriptName} - Script Editor`; // eslint-disable-next-line react-hooks/exhaustive-deps - }, [state.activeUuid]); + }, [state.activeUuid, activeTabScriptName]); // 切换标签后把焦点恢复到对应编辑器(各标签实例常驻,仅丢失键盘焦点) useActiveEditorFocus(state.activeUuid, editorsRef); @@ -175,7 +177,6 @@ export default function ScriptEditor() { return () => window.removeEventListener("beforeunload", onBeforeUnload); }, [anyChanged]); - const activeTab = useMemo(() => state.tabs.find((x) => x.uuid === state.activeUuid), [state.tabs, state.activeUuid]); const subView = activeTab?.subView ?? "code"; // 仅后台/定时脚本可运行;普通脚本隐藏「运行」入口(与脚本列表/弹窗一致) const canRun = !!activeTab && activeTab.script.type !== SCRIPT_TYPE_NORMAL;