diff options
| author | Paul Buetow <paul@buetow.org> | 2026-05-06 08:46:31 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-05-06 08:46:31 +0300 |
| commit | 728ef661402c57e44e1035c311341cf8c5f11922 (patch) | |
| tree | a651e2284de9cfc78ad305acbda87294990c2642 /web/js/detach.js | |
| parent | 30ad6a0416c2a1fec58ddc6f4af727af9518f73c (diff) | |
Add PgUp/PgDn 10% seek in fullscreen mode
Diffstat (limited to 'web/js/detach.js')
| -rw-r--r-- | web/js/detach.js | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/web/js/detach.js b/web/js/detach.js index 3b48122..b1dfd87 100644 --- a/web/js/detach.js +++ b/web/js/detach.js @@ -145,6 +145,8 @@ function handleCommand(payload) { el.play().catch(() => {}); } else if (action === 'seek-relative') { seekRelative(Number(payload.seconds || 0)); + } else if (action === 'seek-percent') { + seekPercent(Number(payload.percent || 0)); } } @@ -164,6 +166,17 @@ function seekRelative(seconds) { sendState(); } +function seekPercent(percent) { + const el = mediaElement(); + if (!currentMedia || !el || !isFinite(percent)) return; + const dur = (el.duration && isFinite(el.duration) && el.duration > 0) ? el.duration : (currentMedia?.duration || 0); + if (!dur) return; + const upper = el.duration && isFinite(el.duration) ? el.duration : Infinity; + el.currentTime = Math.max(0, Math.min(upper, (el.currentTime || 0) + dur * percent)); + lastKnownPosition = el.currentTime || 0; + sendState(); +} + function toggleFullscreen() { const player = document.getElementById('player'); if (!player) return; |
