diff options
Diffstat (limited to 'src/js/plugins')
-rw-r--r-- | src/js/plugins/vimeo.js | 39 | ||||
-rw-r--r-- | src/js/plugins/youtube.js | 21 |
2 files changed, 50 insertions, 10 deletions
diff --git a/src/js/plugins/vimeo.js b/src/js/plugins/vimeo.js index 12632f64..34e326e7 100644 --- a/src/js/plugins/vimeo.js +++ b/src/js/plugins/vimeo.js @@ -77,6 +77,34 @@ const vimeo = { player.media.paused = true; player.media.currentTime = 0; + let { currentTime } = player.media; + + // Seeking + Object.defineProperty(player.media, 'currentTime', { + get() { + return currentTime; + }, + set(time) { + // Get current paused state + const { paused } = player.media; + + player.warn('called'); + + // Set seeking flag + player.media.seeking = true; + + // Trigger seeking + utils.dispatchEvent.call(player, player.media, 'seeking'); + + // Seek after events + player.embed.setCurrentTime(time); + + // Restore pause state + if (paused) { + this.pause(); + } + }, + }); // Playback speed // Not currently supported in Vimeo @@ -88,10 +116,10 @@ const vimeo = { }); // Rebuild UI - ui.build.call(player); + window.setTimeout(() => ui.build.call(player), 0); player.embed.getCurrentTime().then(value => { - player.media.currentTime = value; + currentTime = value; utils.dispatchEvent.call(this, this.media, 'timeupdate'); }); @@ -103,7 +131,6 @@ const vimeo = { // Get captions player.embed.getTextTracks().then(tracks => { player.captions.tracks = tracks; - captions.setup.call(player); }); @@ -121,10 +148,6 @@ const vimeo = { if (utils.is.htmlElement(player.embed.element) && player.supported.ui) { const frame = player.embed.element; - // Fix Vimeo controls issue - // https://github.com/sampotts/plyr/issues/697 - // frame.src = `${frame.src}&transparent=0`; - // Fix keyboard focus issues // https://github.com/sampotts/plyr/issues/317 frame.setAttribute('tabindex', -1); @@ -144,7 +167,7 @@ const vimeo = { this.embed.on('timeupdate', data => { this.media.seeking = false; - this.media.currentTime = data.seconds; + currentTime = data.seconds; utils.dispatchEvent.call(this, this.media, 'timeupdate'); }); diff --git a/src/js/plugins/youtube.js b/src/js/plugins/youtube.js index 7d5c729c..ce21433e 100644 --- a/src/js/plugins/youtube.js +++ b/src/js/plugins/youtube.js @@ -118,6 +118,23 @@ const youtube = { player.media.muted = instance.isMuted(); player.media.currentTime = 0; + // Seeking + Object.defineProperty(player.media, 'currentTime', { + get() { + return Number(instance.getCurrentTime()); + }, + set(time) { + // Set seeking flag + player.media.seeking = true; + + // Trigger seeking + utils.dispatchEvent.call(player, player.media, 'seeking'); + + // Seek after events sent + instance.seekTo(time); + }, + }); + // Playback speed Object.defineProperty(player.media, 'playbackRate', { get() { @@ -142,7 +159,7 @@ const youtube = { } // Rebuild UI - ui.build.call(player); + window.setTimeout(() => ui.build.call(player), 0); utils.dispatchEvent.call(player, player.media, 'timeupdate'); utils.dispatchEvent.call(player, player.media, 'durationchange'); @@ -218,7 +235,7 @@ const youtube = { // Poll to get playback progress player.timers.playing = window.setInterval(() => { - player.media.currentTime = instance.getCurrentTime(); + // player.media.currentTime = instance.getCurrentTime(); utils.dispatchEvent.call(player, player.media, 'timeupdate'); }, 100); |