在网页中划选文本即可查词
+diff --git a/docs/QUICK_REF.md b/docs/QUICK_REF.md index c6c613e..157295b 100644 --- a/docs/QUICK_REF.md +++ b/docs/QUICK_REF.md @@ -7,7 +7,7 @@ ## 版本速查 ### 当前版本 -`0.1.8` → 下一目标 `0.1.9` ([M2.9](./M2.md)) +`0.1.9` → 下一目标 `0.2.1` ([M3.1](./M3.md)) ### 模块版本范围 diff --git a/docs/README.md b/docs/README.md index 7e77102..a1aa6fc 100644 --- a/docs/README.md +++ b/docs/README.md @@ -65,9 +65,9 @@ M11.10完成 → 1.0.0 (正式发布) ## 当前状态 -**当前版本**: `0.1.8` -**当前进度**: 13/97 (13%) -**下一任务**: [M2.9 图标显示开关](./M2.md#m29-图标显示开关--目标版本-0119) +**当前版本**: `0.1.9` +**当前进度**: 14/97 (14%) +**下一任务**: [M3.1 词典接口基类设计](./M3.md#m31-词典接口基类设计--目标版本-021) --- diff --git a/docs/VERSION.md b/docs/VERSION.md index 0e0e78e..44704d5 100644 --- a/docs/VERSION.md +++ b/docs/VERSION.md @@ -28,7 +28,7 @@ | M2.6 | 0.1.6 | 基础面板组件 | ✅ | 2026-02-11 | | M2.7 | 0.1.7 | 面板位置计算 | ✅ | 2026-02-09 | | M2.8 | 0.1.8 | 图标-面板联动 | ✅ | 2026-02-09 | -| M2.9 | 0.1.9 | 图标显示开关 | ⬜ | - | +| M2.9 | 0.1.9 | 图标显示开关 | ✅ | 2026-02-09 | --- diff --git a/manifest.json b/manifest.json index 46c29e4..d37bc7a 100644 --- a/manifest.json +++ b/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 3, "name": "沙拉查词", - "version": "0.1.8", + "version": "0.1.9", "description": "聚合词典划词翻译", "permissions": [ "storage", diff --git a/package.json b/package.json index 3eb687d..1ab9f7c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "salad-dict", - "version": "0.1.8", + "version": "0.1.9", "description": "聚合词典划词翻译", "private": true, "type": "module", diff --git a/src/content/selection.js b/src/content/selection.js index 50d14a1..a4012c6 100644 --- a/src/content/selection.js +++ b/src/content/selection.js @@ -6,6 +6,7 @@ import { logger } from './logger.js'; import { createSaladIcon } from './components/SaladIcon.js'; import { DictPanel } from './components/DictPanel.js'; +import { ConfigManager, isSelectionEnabled } from '../shared/config.js'; let currentIcon = null; let currentPanel = null; @@ -96,7 +97,14 @@ function handleMouseUp(event) { } // 延迟执行,等待选区完成 - setTimeout(() => { + setTimeout(async () => { + // 检查划词功能是否启用 + const enabled = await isSelectionEnabled(); + if (!enabled) { + logger.info('Selection is disabled, skipping icon display'); + return; + } + const selectedText = getSelectedText(); if (selectedText.length > 0) { @@ -192,6 +200,30 @@ function handleKeyDown(event) { } } +let unbindConfigListener = null; + +/** + * 处理配置变更 + * @param {Object} newConfig + */ +function handleConfigChange(newConfig) { + const enabled = newConfig?.general?.enableSelection ?? true; + + logger.info('Config changed, selection enabled:', enabled); + + // 如果禁用划词,隐藏当前图标和面板 + if (!enabled) { + if (currentIcon) { + currentIcon.destroy(); + currentIcon = null; + } + if (currentPanel) { + currentPanel.destroy(); + currentPanel = null; + } + } +} + /** * 初始化文本选择监听 */ @@ -206,6 +238,9 @@ export function initSelectionListener() { document.addEventListener('click', handleDocumentClick); }, 100); + // 监听配置变更 + unbindConfigListener = ConfigManager.onChange(handleConfigChange); + logger.info('Selection listener initialized'); } @@ -216,5 +251,12 @@ export function destroySelectionListener() { document.removeEventListener('mouseup', handleMouseUp); document.removeEventListener('click', handleDocumentClick); document.removeEventListener('keydown', handleKeyDown); + + // 取消配置监听 + if (unbindConfigListener) { + unbindConfigListener(); + unbindConfigListener = null; + } + logger.info('Selection listener destroyed'); } diff --git a/src/popup/index.html b/src/popup/index.html index 05365ad..48c7b3c 100644 --- a/src/popup/index.html +++ b/src/popup/index.html @@ -5,23 +5,107 @@
Popup 页面占位
+在网页中划选文本即可查词
+