Skip to content

fix(web): 补齐 noscript 缺失章节、修复筛选重置遗漏与检索刷新冲突 - #134

Merged
albert4719 merged 5 commits into
eternity4719:mainfrom
parveen0029:fix/web-ux-and-accessibility
Oct 13, 2026
Merged

albert4719 merged 5 commits into
eternity4719:mainfrom
parveen0029:fix/web-ux-and-accessibility

Conversation

@parveen0029

Copy link
Copy Markdown
Contributor

修复背景与问题说明

本次 PR 包含 5 个原子提交,针对在线检索页与生活自查页面的边界逻辑、可访问性及状态同步问题进行集中修复:

  1. 补齐 index.html 的 <noscript> 目录(第 27 至 34 节)

    • 全书扩充至 34 节 690 条后,<noscript> 中的目录仅停留在第 26 节。
    • 补齐新增 8 个章节的重点条目摘要,使无 JS 终端与搜索引擎爬虫可完整索引全书 34 节大纲。
  2. 修复 gotoItem() 跨条目跳转未清空争议与待核实筛选

    • 当读者勾选「只看争议」或「只看待核实」后,若在卡片内点击指向非争议条目的交叉引用,目标元素因 offsetParent === null 触发重置。
    • 原代码仅重置了 state.q 与 DIMS,遗漏了 state.dispute 与 state.todo,导致目标卡片仍处于隐藏状态,页面滚动至空白。此处对齐 init() 与 reset() 逻辑补充完整重置。
  3. 避免 writeUrl() 写入无效 hash 导致刷新丢失检索词,并保护弹窗焦点

    • 当页面已附带特定条目 hash(如 #e-1-1)时,若读者输入新检索词导致该条目被隐藏,原代码仍无条件拼接旧 hash。
    • 读者在此状态下按 F5 刷新时,init() 判定 hash 对应元素存在但被隐藏,误当作外部冲突链接,从而清空了读者的检索词。现仅在卡片处于可见状态时写入 hash,并在 replaceState 中保留 history.state。
    • 全局 keydown 监听在长文弹窗或赞赏弹窗展开时主动跳过,防止快捷键 / 抢夺模态窗内的焦点。
  4. 修复 selfcheck.html 答题数为 0 时的自相矛盾文案

    • 当仅填写基本画像、尚未回答任何具体生活自查问题直接查看结果时,原判定 !no.length 为真,导致输出「书里这些事你都做到了」。
    • 限制仅在 answered > 0 时显示全做到文案,未答题时提示返回作答。
  5. 防御成本标签字典解析污染

    • 针对近期新增的 人群= 标签增加存在性校验,防止在条目对象上注入 undefined 属性。

本地测试与校验

  • node tools/sync-stats.mjs --check:统计数字检查全部通过。
  • node tools/check-refs.mjs --check:1439 处交叉引用全部正确。
  • node tools/check-plain.mjs:690 条说人话规则检查通过。
  • 经语法与运行测试,所有原生脚本与 JSON-LD 结构完全正常。

全书扩充至 34 节 690 条后,index.html 的 noscript 纯文本目录仍停留在第 26 节。补齐第 27 节至第 34 节的重点条目摘要,使无 JS 终端与搜索引擎爬虫可完整获取全书 34 节大纲。
在 gotoItem() 中,当目标卡片因当前筛选被隐藏时,原代码仅清空了关键词 q 与维度筛选 DIMS,遗漏了 state.dispute 与 state.todo。对齐 init() 与 reset() 逻辑,确保跳转至非争议/待核实条目时目标卡片能够正常解除隐藏并精准定位。
1. writeUrl() 中仅在当前筛选下目标卡片可见时保留 location.hash,并在 replaceState 中传递 history.state 保留历史定位状态,避免 F5 刷新时因 hash 与新筛选条件冲突导致检索词被误重置。2. 全局 keydown 监听在长文弹窗或赞赏弹窗打开时跳过快捷键,避免 / 键窃取焦点破坏模态弹窗体验。
当读者仅填写基本情况、未回答任何一道生活自查题目时,因 no.length === 0,原代码会触发 !no.length 判定并输出「书里这些事你都做到了」。限制仅在 answered > 0 时才显示该文案,若未答题则提示返回作答,消除逻辑矛盾。
全书引入「人群=」标签后,因标签字典未做存在性判断,会导致每个条目对象被注入 undefined 属性。增加映射检查,仅在属性存在时赋值,增强解析健壮性。
@albert4719
albert4719 merged commit 2776fab into eternity4719:main Oct 13, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant