summaryrefslogtreecommitdiff
path: root/www/js/api.js
diff options
context:
space:
mode:
Diffstat (limited to 'www/js/api.js')
-rw-r--r--www/js/api.js26
1 files changed, 17 insertions, 9 deletions
diff --git a/www/js/api.js b/www/js/api.js
index 833b120..84cc881 100644
--- a/www/js/api.js
+++ b/www/js/api.js
@@ -61,13 +61,20 @@ window.html5ks.api = new (function () {
for (; i < types.length; i++) {
if (Modernizr.audio[types[i]]) {
audio.src = src + "." + types[i];
+ audio.load();
+ audio.volume = fade ? 0 : volume;
return i;
}
}
+ return null;
};
- var i = setNextType(0);
+ var i;
+ audio.addEventListener("canplaythrough", function canplaythrough() {
+ audio.removeEventListener("canplaythrough", canplaythrough, false);
+ audio.play();
+ });
audio.addEventListener("playing", function playing() {
audio.removeEventListener("playing", playing, false);
if (fade) {
@@ -77,19 +84,20 @@ window.html5ks.api = new (function () {
}, false);
audio.onerror = function (e) {
if (e.code === e.MEDIA_ERR_SRC_NOT_SUPPORTED) {
- i = setNextType(i);
- if (i) {
+ i = setNextType(++i);
+ if (!i) {
+ console.error("No media formats appear to be supported.");
+ console.error(e);
deferred.resolve();
- } else {
- throw new Error(e);
}
} else {
- throw new Error(e);
+ console.error(e);
+ deferred.resolve();
}
};
- audio.load();
- audio.volume = fade ? 0 : volume;
- audio.play();
+
+ i = setNextType(0);
+
return deferred.promise;
},