aboutsummaryrefslogtreecommitdiffstats
path: root/src/js
diff options
context:
space:
mode:
Diffstat (limited to 'src/js')
-rw-r--r--src/js/defaults.js2
-rw-r--r--src/js/listeners.js7
-rw-r--r--src/js/plugins/ads.js4
-rw-r--r--src/js/plugins/youtube.js10
-rw-r--r--src/js/plyr.js29
-rw-r--r--src/js/plyr.polyfilled.js2
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)
// ==========================================================================