Files
FamilyBook/assets
laoyang 306f5a61cb 图片轮播切到视频后左右键失效 (#57)
用户 2026-11-05:「行程里面图片轮播的时候,切换到视频,上下左右键就失效了。」

根因:键盘处理里有 isImage() 判断,只有当前是图片才翻页:
  if (e.key === ArrowLeft && isImage()) { step(-1); }
切到视频后 isImage() 为 false,两个分支都进不去。

当初这么写是因为「视频/PDF 里方向键另有含义,不能抢」——
顾虑是对的(视频左右键是快退/快进),但解法错了:
一刀切禁掉,而不是看焦点在哪。

修法:改成判断事件目标
  function inMediaControl(t) { return !!t.closest("video, iframe"); }
  if (inMediaControl(e.target)) { return; }   // 放行给控件
  其余情况照常翻页,不再限制只有图片

行为矩阵:
  焦点在 video 里         → 视频快退/快进(不被抢)
  焦点在 PDF iframe 里    → PDF 自己翻页(不被抢)
  焦点在别处 / 视频未聚焦  → 上一张 / 下一张

上下键保持不处理:页面滚动、视频音量另有含义。
2026-11-05 13:19:05 +08:00
..