diff options
author | Albin Larsson <mail@albinlarsson.com> | 2018-05-18 04:42:58 +0200 |
---|---|---|
committer | Albin Larsson <mail@albinlarsson.com> | 2018-05-19 04:18:27 +0200 |
commit | f8c89e3e95cb01a621f59d66c60f0fa2d76c4d58 (patch) | |
tree | 9cde5d36535cb6679ac08c601172aa8ca571fa48 /src/js/plugins/vimeo.js | |
parent | 333435a9c2ce263686052318497e604c424d38f3 (diff) | |
download | plyr-f8c89e3e95cb01a621f59d66c60f0fa2d76c4d58.tar.lz plyr-f8c89e3e95cb01a621f59d66c60f0fa2d76c4d58.tar.xz plyr-f8c89e3e95cb01a621f59d66c60f0fa2d76c4d58.zip |
Fix #876: YouTube and Vimeo autoplays on seek
Diffstat (limited to 'src/js/plugins/vimeo.js')
-rw-r--r-- | src/js/plugins/vimeo.js | 40 |
1 files changed, 20 insertions, 20 deletions
diff --git a/src/js/plugins/vimeo.js b/src/js/plugins/vimeo.js index ec047c9b..46d4f3f9 100644 --- a/src/js/plugins/vimeo.js +++ b/src/js/plugins/vimeo.js @@ -149,25 +149,26 @@ const vimeo = { return currentTime; }, set(time) { - // Get current paused state - // Vimeo will automatically play on seek - const { paused } = player.media; - - // Set seeking flag - player.media.seeking = true; - - // Trigger seeking - utils.dispatchEvent.call(player, player.media, 'seeking'); - - // Seek after events - player.embed.setCurrentTime(time).catch(() => { - // Do nothing - }); - - // Restore pause state - if (paused) { - player.pause(); - } + // Vimeo will automatically play on seek if the video hasn't been played before + + // Get current paused state and volume etc + const { embed, media, paused, volume } = player; + + // Set seeking state and trigger event + media.seeking = true; + utils.dispatchEvent.call(player, media, 'seeking'); + + // If paused, mute until seek is complete + Promise.resolve(paused && embed.setVolume(0)) + // Seek + .then(() => embed.setCurrentTime(time)) + // Restore paused + .then(() => paused && embed.pause()) + // Restore volume + .then(() => paused && embed.setVolume(volume)) + .catch(() => { + // Do nothing + }); }, }); @@ -357,7 +358,6 @@ const vimeo = { player.embed.on('seeked', () => { player.media.seeking = false; utils.dispatchEvent.call(player, player.media, 'seeked'); - utils.dispatchEvent.call(player, player.media, 'play'); }); player.embed.on('ended', () => { |