# MOD-03 进度与音量 ARIA 更新检查点 MOD-03保持doing。本轮处理已经进入播放热路径的重复DOM写入,尚未完成该任务要求的 初始化、持久化、全部DOM读写及正式安装包BASE-06配对验收。ENG-PERF-01/02不关闭。 ## 实现与兼容边界 `accessibility/slider.ts`每次刷新仍读取完整range、校验有限数值并计算显示文本。 仅把五个动态ARIA属性改成与当前getAttribute值比较后再写入;辅助函数不导出, 不添加实例字段、不跨事件缓存、不延后更新。外部修改或删除属性仍在下一刷新修复。 范围/步长/禁用逻辑、键盘动作、焦点、公开媒体/进度事件、声明及DOM/CSS名称保持。 这是减少冗余DOM变更的内部优化。观察这些ARIA属性的MutationObserver将不再收到 值完全不变的重复记录,实际值变更仍会记录;不能声称MutationObserver记录序列 完全不变。这些键盘ARIA是本次重构增加的能力,不是静默删掉已发布的播放器事件。 没有修改公共setStyle、Storage方法、autoPlayback写入频率或原生媒体时钟。 不缓存上次range:它可能由外部代码改变,不缓存已写文本:外部代码可能修改DOM。 这样保留动态行为,代价是每次仍进行五次轻量属性读取;不产生布局尺寸读取。 ## 验证设计 Node新用例在旧源码明确失败:重复update产生10次属性写入;其余10项旧键盘/范围/ 清理用例通过。新实现11项通过,并覆盖只改变小数值、显示文本改变、外部DOM修复、 每次调用文本格式器及销毁后无更新。全项目2859项单元测试通过,严格核心TS和lint通过。 `test/browser/slider-updates.spec.js`默认验证当前候选,显式 ARTPLAYER_SLIDER_BASELINE增加修改前真实产物对照。每个引擎运行三组,按旧新/新旧/ 旧新顺序;两边使用相同本地pattern.mp4和viewport,各自重新导航、创建并实际播放。 旧产物冻结自Git `7b0e1d156b8e21e422200ee345afa63950f9d5a2`,不是npm发布基线。 旧脚本通过单个路由替换,附件单独保存该文件和SHA;server manifest仍描述候选路由 原始文件,不能将其误当为替换后旧脚本的身份。 计时阶段暂停原生video,预热300个合成timeupdate,再记录五组各1000次的原始耗时。 没有在计时循环安装MutationObserver。随后单独用原生观察器统计100次重复事件, 验证公开订阅仍收到每次事件,并核对外部ARIA改写恢复。最后恢复真实播放,观察 真实timeupdate和ARIA数值,静态范围属性不应重复写入。这些计时只代表合成重复 事件的执行成本,不是帧率、输入延迟或真实页面端到端性能。 main/legacy各三引擎×三组通过;全部重复事件窗口均由500次ARIA写入降到0, 外部修复由5次降到2次,实际播放继续更新valuenow。主构建真实播放窗口中,旧版 4–5个媒体事件产生20–25次属性变更,候选相应窗口为4–5次;窗口事件数并非全部 相等,因此不以合计总数计算统一百分比。 主构建1000次合成事件的各组中位数:Chromium旧4.6–5.2ms、新3.2–3.6ms; Firefox旧9–10ms、新7–8ms;WebKit旧9–10ms、新7–10ms,其中第二组候选10ms 比旧9ms慢。保留所有原始样本,不把操作数量下降等同所有环境计时都改善。 legacy的完整配对值同样保留在机器记录中,不按有利组筛选。 ## 构建成本与继续工作 由正常`yarn build artplayer --analyze`和`yarn build:i18n`生成三种产物及docs副本, 没有手写产物。相较修改前,现代raw +12/gzip9 +10/Brotli6 +12字节;legacy +12/+17/+11;ESM +154/+34/+44。此项是热路径更新优化,不是体积优化。 现代当前208943 raw / 58756 gzip9仍高于已发布5.4.0的134037 / 35486,原阈值不变。 本次浏览器验收包含普通键盘/进度/音量及回调清理,具体最终执行范围、报告和文件 指纹见[机器记录](../baselines/slider-updates-validation.json)。未运行此次候选的完整 真实安装/初始化配对、物理设备或远端CI;旧安装证据不自动覆盖此次候选。 接下来继续MOD-03的持久化/初始化/布局测量,再使用新的实际安装包完成正式三组 BASE-06性能/资源对比。不能通过提高阈值、节流公开事件、延迟销毁或删除兼容逻辑 制造收益。回退本检查点并正常重建核心/i18n可恢复旧的冗余写入行为;不涉及依赖、 版本或公开声明变更,没有推送或发布。