Skip to content

Commit a2dd904

Browse files
committed
fix: Select X 改 mousedown 触发并加 suppression,响应头面板展示全量头
button 模式 X span 体积小,用户的 mousedown 落在 X 但 mouseup 可能滑到下方 button 区域,click 在 button 上触发 toggle 重新打开下拉;@click.stop 因 click target 不再是 X 而失效。把 X 处理改到 @mousedown.stop.prevent,更早响应且阻止 focus 转移到 button;clear 同时把 suppressTriggerUntil 推后 250ms,期间 trigger 的 click 不会重新 open。响应头面板原先用 main.headers(只是 interesting headers 几条),数字显示 normalizedHeaders 总数(17),数据与列表不一致。buildHeaderRecord 输出 sanitize 后的 allHeaders 全集,raw 面板优先用 allHeaders 让 17 个响应头都看得到。将版本号提升到 1.2.96。
1 parent 78a73d1 commit a2dd904

4 files changed

Lines changed: 24 additions & 6 deletions

File tree

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "stackprism",
33
"private": true,
4-
"version": "1.2.95",
4+
"version": "1.2.96",
55
"type": "module",
66
"description": "StackPrism 用于检测网页前端、后端、CDN、SaaS、广告营销、统计、登录、支付、网站程序和主题模板线索。",
77
"scripts": {

src/background/headers.ts

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,10 @@ const detectFromHeaders = (headers: Record<string, string>, url: string, headerR
103103
applyHeaderValueRuleList(add, headerRules.poweredByProducts, poweredBy, headers['x-powered-by'], 'x-powered-by')
104104
applyHeaderRuleList(add, headerRules.headerPatterns, '其他库', headerBlob, 'JSON 响应头规则', () => '', lowerHeaderBlob)
105105

106-
if (matchesHeaderPatterns(headerRules.unknownCdnPatterns, lowerHeaderBlob) && !technologies.some(tech => tech.category === 'CDN / 托管')) {
106+
if (
107+
matchesHeaderPatterns(headerRules.unknownCdnPatterns, lowerHeaderBlob) &&
108+
!technologies.some(tech => tech.category === 'CDN / 托管')
109+
) {
107110
add('CDN / 托管', '未知 / 自定义 CDN', '低', '响应头包含 CDN 或 Edge 缓存线索')
108111
}
109112

@@ -159,6 +162,14 @@ export const fetchMainHeadersFallback = async (url: string, headerRules: any, se
159162
}
160163
}
161164

165+
const sanitizeAllHeaders = (headers: Record<string, string>) => {
166+
const out: Record<string, string> = {}
167+
for (const [name, value] of Object.entries(headers)) {
168+
out[name] = sanitizeHeaderValue(name, value)
169+
}
170+
return out
171+
}
172+
162173
export const buildHeaderRecord = (details: any, headerRules: any, settings: any) => {
163174
const normalizedHeaders = normalizeHeaders(details.responseHeaders)
164175
const headers = pickHeaders(normalizedHeaders, headerRules.interestingHeaders || [])
@@ -170,6 +181,7 @@ export const buildHeaderRecord = (details: any, headerRules: any, settings: any)
170181
statusCode: details.statusCode,
171182
time: Date.now(),
172183
headers,
184+
allHeaders: sanitizeAllHeaders(normalizedHeaders),
173185
headerCount: Object.keys(normalizedHeaders).length,
174186
technologies: detectFromHeaders(normalizedHeaders, details.url, headerRules, settings)
175187
}
@@ -203,6 +215,10 @@ export const mergeHeaderRecords = (previous: any, next: any) => {
203215
...(previous.headers || {}),
204216
...(next.headers || {})
205217
},
218+
allHeaders: {
219+
...(previous.allHeaders || {}),
220+
...(next.allHeaders || {})
221+
},
206222
headerCount: Math.max(Number(previous.headerCount || 0), Number(next.headerCount || 0)),
207223
technologies: mergeTechnologyRecords([...(previous.technologies || []), ...(next.technologies || [])])
208224
}

src/background/popup-cache.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -274,7 +274,7 @@ const buildPopupResult = async (data: any, settings: any, tab: any) => {
274274
export const buildPopupRawResult = async (data: any, settings: any, tab: any) => {
275275
const technologies = await attachTechnologyLinks(buildDisplayTechnologies(data, settings), settings)
276276
const resources = mergeResourceSummary(data.page?.resources || {}, data.dynamic || {})
277-
const headers = data.main?.headers || {}
277+
const headers = data.main?.allHeaders || data.main?.headers || {}
278278
return {
279279
url: data.page?.url || data.dynamic?.url || tab?.url || '',
280280
title: data.page?.title || data.dynamic?.title || tab?.title || '',

src/ui/components/Select.vue

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@
2020
role="button"
2121
:title="clearTitle"
2222
:aria-label="clearTitle"
23-
@click.stop="clear"
24-
@mousedown.stop
23+
@mousedown.stop.prevent="clear"
24+
@click.stop
2525
>
2626
<X :size="12" :stroke-width="2" />
2727
</span>
@@ -47,7 +47,8 @@
4747
tabindex="-1"
4848
:title="clearTitle"
4949
:aria-label="clearTitle"
50-
@mousedown.prevent="clear"
50+
@mousedown.stop.prevent="clear"
51+
@click.stop
5152
>
5253
<X :size="12" :stroke-width="2" />
5354
</button>
@@ -124,6 +125,7 @@
124125
if (props.disabled) return
125126
emit('update:modelValue', '')
126127
close()
128+
suppressTriggerUntil = Date.now() + 250
127129
if (props.creatable) inputRef.value?.focus()
128130
else triggerRef.value?.focus()
129131
}

0 commit comments

Comments
 (0)