diff options
| author | RblSb <msrblsb@gmail.com> | 2020-03-31 21:30:24 +0300 |
|---|---|---|
| committer | RblSb <msrblsb@gmail.com> | 2020-03-31 21:30:24 +0300 |
| commit | f7b2ea74895bf01a84797c001754f79d22af6de2 (patch) | |
| tree | f610fac3d251cd901a4f796a5df3757f85438021 /src/client | |
| parent | 0fbb8c6b2d7cb2b25f2c9c7e183301eedee24ab5 (diff) | |
Safe autoplay on Chromium
Diffstat (limited to 'src/client')
| -rw-r--r-- | src/client/players/Raw.hx | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/client/players/Raw.hx b/src/client/players/Raw.hx index 44a33f2..5637b1c 100644 --- a/src/client/players/Raw.hx +++ b/src/client/players/Raw.hx @@ -13,6 +13,7 @@ class Raw implements IPlayer { final main:Main; final player:Player; final playerEl:Element = ge("#ytapiplayer"); + var playAllowed = true; var video:VideoElement; public function new(main:Main, player:Player) { @@ -60,10 +61,12 @@ class Raw implements IPlayer { }, 3000); video.oncanplaythrough = player.onCanBePlayed; video.onseeking = player.onSetTime; - video.onplay = player.onPlay; + video.onplay = e -> { + playAllowed = true; + player.onPlay(); + } video.onpause = player.onPause; playerEl.appendChild(video); - video.pause(); } public function removeVideo():Void { @@ -74,7 +77,13 @@ class Raw implements IPlayer { public function play():Void { if (video == null) return; - video.play(); + if (!playAllowed) return; + final promise = video.play(); + if (promise == null) return; + promise.catchError(error -> { + // Do not try to play video anymore or Chromium will hide play button + playAllowed = false; + }); } public function pause():Void { |
