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 /res | |
| parent | 0fbb8c6b2d7cb2b25f2c9c7e183301eedee24ab5 (diff) | |
Safe autoplay on Chromium
Diffstat (limited to 'res')
| -rw-r--r-- | res/client.js | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/res/client.js b/res/client.js index aa76441..c7d2369 100644 --- a/res/client.js +++ b/res/client.js @@ -1959,6 +1959,7 @@ client_players_Iframe.prototype = { } }; var client_players_Raw = function(main,player) { + this.playAllowed = true; this.playerEl = window.document.querySelector("#ytapiplayer"); this.main = main; this.player = player; @@ -2013,10 +2014,13 @@ client_players_Raw.prototype = { } this.video.oncanplaythrough = ($_=this.player,$bind($_,$_.onCanBePlayed)); this.video.onseeking = ($_=this.player,$bind($_,$_.onSetTime)); - this.video.onplay = ($_=this.player,$bind($_,$_.onPlay)); + this.video.onplay = function(e1) { + _gthis.playAllowed = true; + _gthis.player.onPlay(); + return; + }; this.video.onpause = ($_=this.player,$bind($_,$_.onPause)); this.playerEl.appendChild(this.video); - this.video.pause(); } ,removeVideo: function() { if(this.video == null) { @@ -2026,10 +2030,20 @@ client_players_Raw.prototype = { this.video = null; } ,play: function() { + var _gthis = this; if(this.video == null) { return; } - this.video.play(); + if(!this.playAllowed) { + return; + } + var promise = this.video.play(); + if(promise == null) { + return; + } + promise.catch(function(error) { + return _gthis.playAllowed = false; + }); } ,pause: function() { if(this.video == null) { |
