“十二梯度,一个身份——DHSeaDev" 笔记

“十二梯度,一个身份——DHSeaDev"

一个细微的标记缺陷涉及十二个完全相同的 SVG 渐变,每个均使用相同的 ID 定义。 这导致十二个渐变定义中有十一个未被使用,而所有视觉元素错误地引用了第一个定义。 由于所有重复的渐变具有相同的颜色停止,页面在视觉上看起来正确。 这种不可见性使得标准站点审核(包括作者本人进行的五次审核)未能发现该问题。 问题一直隐藏,直到某个渐变定义被修改,可能影响错误的元素或根本不影响任何元素。 由于此前从未造成可见问题,缺少对重复 ID 的关键审核检查。 最初尝试通过顺序重命名 ID 来修复,却因将错误的定义与引用配对,引发了更严重且可见的 bug。 这一疏忽通过计数断言得以避免,该断言检测到了定义与引用之间的不平衡。 正确的解决方案是将 ID 重命名限制在单个 SVG 块内,确保定义仅在其自身作用域内与引用匹配。 此次经历凸显了审核重复 ID 的重要性,尤其是针对内联 SVG,并需仔细验证查找和替换操作。