diff --git a/static/app.js b/static/app.js index 443e462..18ce665 100644 --- a/static/app.js +++ b/static/app.js @@ -609,7 +609,7 @@ function stepEp(d) { function videoEl() { const v = document.createElement("video"); - v.controls = true; v.autoplay = true; + v.controls = true; v.autoplay = true; v.playsinline = true; return v; } @@ -727,9 +727,15 @@ async function play(ep_id, ep_no) { // hls.js fatal-error path — leave its overlay alone. v.play().catch(err => { if (!err || err.name !== "NotAllowedError") return; - playerOverlay("Tap to play", () => { - v.play().catch(() => playerFail("playback blocked by the browser")); - }, "Play"); + // Not fatal: a tap (a real gesture) usually starts playback. If the + // browser rejects even that (autoplay disallowed for the site, …), + // stay on the tappable overlay and say what to change — retrying + // play() would just hit the same wall + const tap = () => v.play().catch(() => blocked()); + const blocked = () => playerOverlay( + "Browser blocked playback. Tap Play, or allow autoplay for this " + + "site in the browser's site settings", tap, "Play"); + blocked(); }); watchPos(v); postHistory({...meta(v), title: detail.name, slug_id: detail.slug_id, season_id: seasonId,