fix(qrcode): 修复图片右键菜单功能描述和检测逻辑

- 修改菜单标题为「解析图片二维码」更准确
- 改进 isImageUrl 函数,支持更多图片URL格式
- 支持 data:image/ 格式
- 支持URL路径中包含图片相关关键词
- 更新国际化文案和测试用例
This commit is contained in:
雨霖铃
2026-05-30 21:01:33 +08:00
parent 5be15301b5
commit e919af6857
4 changed files with 22 additions and 5 deletions
+1 -1
View File
@@ -617,7 +617,7 @@
"description": "Translation key: qrCode_resultPlaceholder" "description": "Translation key: qrCode_resultPlaceholder"
}, },
"qrCode_imageToQr": { "qrCode_imageToQr": {
"message": "图片二维码", "message": "解析图片二维码",
"description": "Translation key: qrCode_imageToQr" "description": "Translation key: qrCode_imageToQr"
}, },
"rightClickRestorer_loading": { "rightClickRestorer_loading": {
+19 -2
View File
@@ -27,9 +27,26 @@ function isUrl(text: string): boolean {
/** 检测URL是否为图片格式 */ /** 检测URL是否为图片格式 */
function isImageUrl(url: string): boolean { function isImageUrl(url: string): boolean {
const trimmedUrl = url.trim().toLowerCase();
// 检查是否为 data:image 格式
if (trimmedUrl.startsWith('data:image/')) {
return true;
}
// 检查是否包含图片扩展名
const imageExtensions = ['.jpg', '.jpeg', '.png', '.gif', '.bmp', '.webp', '.svg', '.ico']; const imageExtensions = ['.jpg', '.jpeg', '.png', '.gif', '.bmp', '.webp', '.svg', '.ico'];
const lowerUrl = url.toLowerCase(); if (imageExtensions.some((ext) => trimmedUrl.includes(ext))) {
return imageExtensions.some((ext) => lowerUrl.includes(ext)); return true;
}
// 检查URL路径中是否包含图片相关关键词
const imageKeywords = ['/image/', '/img/', '/photo/', '/pic/', '/upload/'];
if (imageKeywords.some((keyword) => trimmedUrl.includes(keyword))) {
return true;
}
return false;
} }
/** 生成二维码的核心逻辑 */ /** 生成二维码的核心逻辑 */
+1 -1
View File
@@ -50,7 +50,7 @@ describe('contextMenu', () => {
); );
expect(imageMenus).toHaveLength(1); expect(imageMenus).toHaveLength(1);
expect(imageMenus[0].id).toBe('qrCode-image'); expect(imageMenus[0].id).toBe('qrCode-image');
expect(imageMenus[0].title).toBe('🖼️ 图片二维码'); expect(imageMenus[0].title).toBe('🖼️ 解析图片二维码');
}); });
}); });
+1 -1
View File
@@ -80,7 +80,7 @@ export const CONTEXT_MENU_CONFIGS: ContextMenuItemConfig[] = [
}, },
{ {
id: 'qrCode-image', id: 'qrCode-image',
title: '🖼️ 图片二维码', title: '🖼️ 解析图片二维码',
contexts: [chrome.contextMenus.ContextType.IMAGE], contexts: [chrome.contextMenus.ContextType.IMAGE],
parentId: PARENT_MENU_ID, parentId: PARENT_MENU_ID,
}, },