「行程里面图片轮播的时候,切换到视频,上下左右键就失效了。」
preview.js 的键盘处理:
preview.js
function isImage() { return items[cur] && (items[cur].getAttribute('data-prev') || '') === 'image'; } document.addEventListener('keydown', function (e) { if (e.key === 'ArrowLeft' && isImage()) { step(-1); } if (e.key === 'ArrowRight' && isImage()) { step(1); } });
左右键只在当前是图片时才生效。 切到视频后 isImage() 返回 false ⇒ 两个分支都进不去 ⇒ 翻不动。
isImage()
代码注释留着原因:
「视频/PDF 里方向键另有含义,不能抢」
这个顾虑是对的:
但当时的解法是全局一刀切禁掉,而不是"看焦点在哪"。
/** 按键是否发生在媒体控件内部(视频 / PDF iframe) */ function inMediaControl(t) { if (!t || !t.closest) { return false; } return !!t.closest('video, iframe'); } document.addEventListener('keydown', function (e) { if (box.hidden) { return; } if (e.key === 'Escape') { close(); return; } // 焦点在视频/PDF 控件里 → 放行给控件 if (inMediaControl(e.target)) { return; } // 其余情况 → 照常翻页(不再限制只有图片) if (e.key === 'ArrowLeft') { e.preventDefault(); step(-1); return; } if (e.key === 'ArrowRight') { e.preventDefault(); step(1); } });
<video>
⚠️ 上下键保持不处理:页面滚动、视频音量另有含义,抢了会别扭。
用户 2026-11-05 重申流程:「所有改动都需要建工单。如果是新的,就新建工单; 如果是之前功能的修改,就在工单下面进行评论。」
本单是新的交互问题,不属于 #52(视频黑屏)/#56(压缩参数)的延续: 那两个是"视频播不了",本单是"能播了之后键盘不响应"。
#52 是视频播不了(304/Range 冲突 + HEVC 编码),#56 是压缩参数误加到视频上导致播不了。本单是「视频已经能播了之后,键盘不响应」——属于交互层问题,不是播放能力问题。
No dependencies set.
The note is not visible to the blocked user.
图片轮播切到视频后左右键失效
用户(2026-11-05)
根因
preview.js的键盘处理:左右键只在当前是图片时才生效。 切到视频后
isImage()返回 false⇒ 两个分支都进不去 ⇒ 翻不动。
当初为什么这么写
代码注释留着原因:
这个顾虑是对的:
但当时的解法是全局一刀切禁掉,而不是"看焦点在哪"。
修法:看事件目标
行为矩阵
<video>里(点了播放)⚠️ 上下键保持不处理:页面滚动、视频音量另有含义,抢了会别扭。
验收
备注
用户 2026-11-05 重申流程:「所有改动都需要建工单。如果是新的,就新建工单;
如果是之前功能的修改,就在工单下面进行评论。」
本单是新的交互问题,不属于 #52(视频黑屏)/#56(压缩参数)的延续:
那两个是"视频播不了",本单是"能播了之后键盘不响应"。
为什么单独建单
#52 是视频播不了(304/Range 冲突 + HEVC 编码),#56 是压缩参数误加到视频上导致播不了。本单是「视频已经能播了之后,键盘不响应」——属于交互层问题,不是播放能力问题。