diff --git a/client/src/App.vue b/client/src/App.vue
index 596e059..2a9bede 100644
--- a/client/src/App.vue
+++ b/client/src/App.vue
@@ -24,7 +24,7 @@
-
+
diff --git a/client/src/components/CodePreview.vue b/client/src/components/CodePreview.vue
index 5383560..953839d 100644
--- a/client/src/components/CodePreview.vue
+++ b/client/src/components/CodePreview.vue
@@ -26,7 +26,7 @@
{
`
}
+let runTimer: ReturnType | null = null
+
const handleCodeChange = () => {
highlightCode()
// 对于非 Web 语言(如 Python/React),不自动运行,等待用户点击 Run
if (['html', 'css', 'javascript'].includes(selectedLanguage.value)) {
// Debounce auto-run for lightweight languages
- clearTimeout(window.runTimer)
- window.runTimer = setTimeout(() => runCode(), 1000)
+ if (runTimer) clearTimeout(runTimer)
+ runTimer = setTimeout(() => runCode(), 1000)
}
}
diff --git a/client/src/components/Footer.vue b/client/src/components/Footer.vue
index 764ac63..f067aef 100644
--- a/client/src/components/Footer.vue
+++ b/client/src/components/Footer.vue
@@ -1,12 +1,14 @@
\ No newline at end of file
diff --git a/client/src/components/MobileMenu.vue b/client/src/components/MobileMenu.vue
index a39dbb4..8d49336 100644
--- a/client/src/components/MobileMenu.vue
+++ b/client/src/components/MobileMenu.vue
@@ -6,7 +6,7 @@
作品
代码
关于
- 管理入口
+ 管理入口
@@ -30,6 +30,10 @@ const navigate = (target: string) => {
toggleMobileMenu()
}
+const openAdmin = () => {
+ window.open('admin.html', '_blank')
+}
+
const refreshIcons = () => {
if ((window as any).lucide) {
(window as any).lucide.createIcons()
diff --git a/client/src/components/SnippetModal.vue b/client/src/components/SnippetModal.vue
index 5367be4..529e645 100644
--- a/client/src/components/SnippetModal.vue
+++ b/client/src/components/SnippetModal.vue
@@ -75,7 +75,7 @@