From 4af6bd069333a8990afc336a6e71090e7978ca4d Mon Sep 17 00:00:00 2001 From: yu <1919727607@qq.com> Date: Thu, 5 Nov 2026 12:24:56 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=A8=A1=E6=9D=BF=E5=AD=97?= =?UTF-8?q?=E9=9D=A2=E9=87=8F=E5=90=83=E6=8E=89=E6=AD=A3=E5=88=99=E5=8F=8D?= =?UTF-8?q?=E6=96=9C=E6=9D=A0:=20\\d{6,}=20=E6=94=B9=E4=B8=BA=20[0-9]{6,}?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 引导脚本为 TS 模板字面量, 编译时 \\d 被当作无效转义吞掉反斜杠, 运行时正则退化为字面量 d{6,} 永不匹配, 动态id泛化从未真正生效 - 此前端到端验证直接注入源码原文绕过了模板编译, 故未暴露 - 改用 [0-9] 从根源规避转义问题; 已用 bundle 提取的真实运行时脚本验证通过 --- src/main/browser/session.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/browser/session.ts b/src/main/browser/session.ts index 89f3c8a..d32d4a6 100644 --- a/src/main/browser/session.ts +++ b/src/main/browser/session.ts @@ -298,7 +298,7 @@ export class BrowserSession implements BrowserLike { const stable = (item) => { if (item.id) { // 长数字结尾的唯一 id 多为动态记录 id(如淘宝 item_id_1087512368188),泛化为前缀匹配以命中所有同类卡片 - const dynamic = /^(.*?[-_])\d{6,}$/.exec(item.id); + const dynamic = /^(.*?[-_])[0-9]{6,}$/.exec(item.id); if (dynamic) { const generalized = '[id^="' + cssEscape(dynamic[1]) + '"]'; try { if (root.querySelectorAll(generalized).length >= 1) return generalized; } catch {} @@ -1298,7 +1298,7 @@ const PICKER_BOOTSTRAP_SOURCE = `(() => { const stable = (item) => { if (item.id) { // 长数字结尾的唯一 id 多为动态记录 id(如淘宝 item_id_1087512368188),泛化为前缀匹配以命中所有同类卡片 - const dynamic = /^(.*?[-_])\d{6,}$/.exec(item.id); + const dynamic = /^(.*?[-_])[0-9]{6,}$/.exec(item.id); if (dynamic) { const generalized = '[id^="' + cssEscape(dynamic[1]) + '"]'; try { if (root.querySelectorAll(generalized).length >= 1) return generalized; } catch {}