diff options
Diffstat (limited to 'src/js')
-rw-r--r-- | src/js/defaults.js | 2 | ||||
-rw-r--r-- | src/js/listeners.js | 7 | ||||
-rw-r--r-- | src/js/plugins/ads.js | 4 | ||||
-rw-r--r-- | src/js/plugins/youtube.js | 10 | ||||
-rw-r--r-- | src/js/plyr.js | 29 | ||||
-rw-r--r-- | src/js/plyr.polyfilled.js | 2 |
6 files changed, 34 insertions, 20 deletions
diff --git a/src/js/defaults.js b/src/js/defaults.js index d687472e..91bb2386 100644 --- a/src/js/defaults.js +++ b/src/js/defaults.js @@ -56,7 +56,7 @@ const defaults = { // Sprite (for icons) loadSprite: true, iconPrefix: 'plyr', - iconUrl: 'https://cdn.plyr.io/3.0.0-beta.19/plyr.svg', + iconUrl: 'https://cdn.plyr.io/3.0.0-beta.20/plyr.svg', // Blank video (used to prevent errors on source change) blankVideo: 'https://cdn.plyr.io/static/blank.mp4', diff --git a/src/js/listeners.js b/src/js/listeners.js index 865ee66f..10011d14 100644 --- a/src/js/listeners.js +++ b/src/js/listeners.js @@ -188,7 +188,7 @@ class Listeners { } // Global window & document listeners - global(toggle) { + global(toggle = true) { // Keyboard shortcuts if (this.player.config.keyboard.global) { utils.toggleListener(window, 'keydown keyup', this.handleKey, toggle, false); @@ -585,6 +585,11 @@ class Listeners { false, ); } + + // Reset on destroy + clear() { + this.global(false); + } } export default Listeners; diff --git a/src/js/plugins/ads.js b/src/js/plugins/ads.js index cbbf3a47..31a797c2 100644 --- a/src/js/plugins/ads.js +++ b/src/js/plugins/ads.js @@ -171,7 +171,7 @@ class Ads { */ pollCountdown(start = false) { if (!start) { - window.clearInterval(this.countdownTimer); + clearInterval(this.countdownTimer); this.elements.container.removeAttribute('data-badge-text'); return; } @@ -182,7 +182,7 @@ class Ads { this.elements.container.setAttribute('data-badge-text', label); }; - this.countdownTimer = window.setInterval(update, 100); + this.countdownTimer = setInterval(update, 100); } /** diff --git a/src/js/plugins/youtube.js b/src/js/plugins/youtube.js index b2f6f57f..0ded378a 100644 --- a/src/js/plugins/youtube.js +++ b/src/js/plugins/youtube.js @@ -305,10 +305,10 @@ const youtube = { utils.dispatchEvent.call(player, player.media, 'durationchange'); // Reset timer - window.clearInterval(player.timers.buffering); + clearInterval(player.timers.buffering); // Setup buffering - player.timers.buffering = window.setInterval(() => { + player.timers.buffering = setInterval(() => { // Get loaded % from YouTube player.media.buffered = instance.getVideoLoadedFraction(); @@ -322,7 +322,7 @@ const youtube = { // Bail if we're at 100% if (player.media.buffered === 1) { - window.clearInterval(player.timers.buffering); + clearInterval(player.timers.buffering); // Trigger event utils.dispatchEvent.call(player, player.media, 'canplaythrough'); @@ -337,7 +337,7 @@ const youtube = { const instance = event.target; // Reset timer - window.clearInterval(player.timers.playing); + clearInterval(player.timers.playing); // Handle events // -1 Unstarted @@ -377,7 +377,7 @@ const youtube = { utils.dispatchEvent.call(player, player.media, 'playing'); // Poll to get playback progress - player.timers.playing = window.setInterval(() => { + player.timers.playing = setInterval(() => { utils.dispatchEvent.call(player, player.media, 'timeupdate'); }, 50); diff --git a/src/js/plyr.js b/src/js/plyr.js index a0477e05..4ab2a64a 100644 --- a/src/js/plyr.js +++ b/src/js/plyr.js @@ -1,6 +1,6 @@ // ========================================================================== // Plyr -// plyr.js v3.0.0-beta.19 +// plyr.js v3.0.0-beta.20 // https://github.com/sampotts/plyr // License: The MIT License (MIT) // ========================================================================== @@ -276,7 +276,7 @@ class Plyr { this.listeners.container(); // Global listeners - this.listeners.global(true); + this.listeners.global(); // Setup fullscreen this.fullscreen = new Fullscreen(this); @@ -951,7 +951,7 @@ class Plyr { } // Clear timer on every call - window.clearTimeout(this.timers.controls); + clearTimeout(this.timers.controls); // If the mouse is not over the controls, set a timeout to hide them if (show || this.paused || this.loading) { @@ -1057,12 +1057,12 @@ class Plyr { callback(); } } else { + // Unbind listeners + this.listeners.clear(); + // Replace the container with the original element provided utils.replaceElement(this.elements.original, this.elements.container); - // Unbind global listeners - this.listeners.global(false); - // Event utils.dispatchEvent.call(this, this.elements.original, 'destroyed', true); @@ -1071,15 +1071,24 @@ class Plyr { callback.call(this.elements.original); } - // Clear for GC - this.elements = null; + // Clear for garbage collection + setTimeout(() => { + this.elements = null; + this.media = null; + }, 200); } }; + // Stop playback + this.stop(); + // Type specific stuff switch (`${this.provider}:${this.type}`) { case 'html5:video': case 'html5:audio': + // Clear timeout + clearTimeout(this.timers.loading); + // Restore native video controls ui.toggleNativeControls.call(this, true); @@ -1090,8 +1099,8 @@ class Plyr { case 'youtube:video': // Clear timers - window.clearInterval(this.timers.buffering); - window.clearInterval(this.timers.playing); + clearInterval(this.timers.buffering); + clearInterval(this.timers.playing); // Destroy YouTube API if (this.embed !== null) { diff --git a/src/js/plyr.polyfilled.js b/src/js/plyr.polyfilled.js index 4880e41f..9dfec20f 100644 --- a/src/js/plyr.polyfilled.js +++ b/src/js/plyr.polyfilled.js @@ -1,6 +1,6 @@ // ========================================================================== // Plyr Polyfilled Build -// plyr.js v3.0.0-beta.19 +// plyr.js v3.0.0-beta.20 // https://github.com/sampotts/plyr // License: The MIT License (MIT) // ========================================================================== |