aboutsummaryrefslogtreecommitdiffstats
path: root/src/js/ui.js
diff options
context:
space:
mode:
authorSam <sam@potts.es>2018-01-04 13:43:56 +1100
committerSam <sam@potts.es>2018-01-04 13:43:56 +1100
commit92cb9e22e24d52e1843a5865651f7b2c5a00d47a (patch)
treebc626af1855f08504e9ee09fdaa6753d7bbf59c4 /src/js/ui.js
parent6b9106ddb1416e59f2dde05039c7ebad15ee8fa7 (diff)
downloadplyr-92cb9e22e24d52e1843a5865651f7b2c5a00d47a.tar.lz
plyr-92cb9e22e24d52e1843a5865651f7b2c5a00d47a.tar.xz
plyr-92cb9e22e24d52e1843a5865651f7b2c5a00d47a.zip
Started on error handling
Diffstat (limited to 'src/js/ui.js')
-rw-r--r--src/js/ui.js25
1 files changed, 24 insertions, 1 deletions
diff --git a/src/js/ui.js b/src/js/ui.js
index 44f1a367..7a45a6c3 100644
--- a/src/js/ui.js
+++ b/src/js/ui.js
@@ -153,7 +153,7 @@ const ui = {
// Check if media is loading
checkLoading(event) {
- this.loading = [
+ this.loading = this.media.networkState === 2 || [
'stalled',
'waiting',
].includes(event.type);
@@ -171,6 +171,29 @@ const ui = {
}, this.loading ? 250 : 0);
},
+ // Check if media failed to load
+ checkFailed() {
+ // https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/networkState
+ this.failed = this.media.networkState === 3;
+
+ if (this.failed) {
+ utils.toggleClass(this.elements.container, this.config.classNames.loading, false);
+ utils.toggleClass(this.elements.container, this.config.classNames.error, true);
+ }
+
+ // Clear timer
+ clearTimeout(this.timers.failed);
+
+ // Timer to prevent flicker when seeking
+ this.timers.loading = setTimeout(() => {
+ // Toggle container class hook
+ utils.toggleClass(this.elements.container, this.config.classNames.loading, this.loading);
+
+ // Show controls if loading, hide if done
+ this.toggleControls(this.loading);
+ }, this.loading ? 250 : 0);
+ },
+
// Update volume UI and storage
updateVolume() {
if (!this.supported.ui) {