diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/js/controls.js | 1 | ||||
-rw-r--r-- | src/js/html5.js | 10 | ||||
-rw-r--r-- | src/js/listeners.js | 2 | ||||
-rw-r--r-- | src/js/plugins/preview-thumbnails.js | 4 | ||||
-rw-r--r-- | src/js/utils/elements.js | 3 |
5 files changed, 12 insertions, 8 deletions
diff --git a/src/js/controls.js b/src/js/controls.js index 33d5724b..0b66d8f6 100644 --- a/src/js/controls.js +++ b/src/js/controls.js @@ -1582,6 +1582,7 @@ const controls = { element: 'a', href: this.download, target: '_blank', + download: '', }); const { download } = this.config.urls; diff --git a/src/js/html5.js b/src/js/html5.js index 1173bcbe..d1e82489 100644 --- a/src/js/html5.js +++ b/src/js/html5.js @@ -65,6 +65,10 @@ const html5 = { return source && Number(source.getAttribute('size')); }, set(input) { + if (player.quality === input) { + return; + } + // If we're using an an external handler... if (player.config.quality.forced && is.function(player.config.quality.onChange)) { player.config.quality.onChange(input); @@ -80,7 +84,7 @@ const html5 = { } // Get current state - const { currentTime, paused, preload, readyState } = player.media; + const { currentTime, paused, preload, readyState, playbackRate } = player.media; // Set new source player.media.src = source.getAttribute('src'); @@ -89,10 +93,8 @@ const html5 = { if (preload !== 'none' || readyState) { // Restore time player.once('loadedmetadata', () => { - if (player.currentTime === 0) { - return; - } + player.speed = playbackRate; player.currentTime = currentTime; // Resume playing diff --git a/src/js/listeners.js b/src/js/listeners.js index f68245e4..5b888a90 100644 --- a/src/js/listeners.js +++ b/src/js/listeners.js @@ -725,7 +725,7 @@ class Listeners { }); // Hide thumbnail preview - on mouse click, mouse leave, and video play/seek. All four are required, e.g., for buffering - this.bind(elements.progress, 'mouseleave click', () => { + this.bind(elements.progress, 'mouseleave touchend click', () => { const { previewThumbnails } = player; if (previewThumbnails && previewThumbnails.loaded) { diff --git a/src/js/plugins/preview-thumbnails.js b/src/js/plugins/preview-thumbnails.js index 44e6ace7..6cd09ef2 100644 --- a/src/js/plugins/preview-thumbnails.js +++ b/src/js/plugins/preview-thumbnails.js @@ -239,8 +239,8 @@ class PreviewThumbnails { } startScrubbing(event) { - // Only act on left mouse button (0), or touch device (event.button is false) - if (event.button === false || event.button === 0) { + // Only act on left mouse button (0), or touch device (event.button does not exist or is false) + if (is.nullOrUndefined(event.button) || event.button === false || event.button === 0) { this.mouseDown = true; // Wait until media has a duration diff --git a/src/js/utils/elements.js b/src/js/utils/elements.js index 4f10938e..921d533a 100644 --- a/src/js/utils/elements.js +++ b/src/js/utils/elements.js @@ -257,10 +257,11 @@ export function trapFocus(element = null, toggle = false) { const focusable = getElements.call(this, 'button:not(:disabled), input:not(:disabled), [tabindex]'); const first = focusable[0]; const last = focusable[focusable.length - 1]; + const player = this; const trap = event => { // Bail if not tab key or not fullscreen - if (event.key !== 'Tab' || event.keyCode !== 9) { + if (event.key !== 'Tab' || event.keyCode !== 9 || !player.fullscreen.active) { return; } |