我刚刚浏览了Jbox插件代码,特别是添加音频的部分,我遇到了以下代码:
jBox.prototype.audio = function(options) {
options || (options = {});
jBox._audio || (jBox._audio = {});
// URL required, no IE8 support
if (!options.url || this.IE8) return this;
// Create audio if it doesn't exist
if (!jBox._audio[options.url]) {
var audio = jQuery('<audio/>');
jQuery('<source/>', {src: options.url + '.mp3'}).appendTo(audio);
jQuery('<source/>', {src: options.url + '.ogg'}).appendTo(audio);
jBox._audio[options.url] = audio[0];
}
// Set volume and play audio
jBox._audio[options.url].volume = Math.min((options.volume != undefined ? options.volume :
(this.options.volume != undefined ? this.options.volume : 100) / 100), 1);
jBox._audio[options.url].pause();
try { jBox._audio[options.url].currentTime = 0; } catch (e) {}
jBox._audio[options.url].play();
return this;
};
我遇到困难的代码行如下:
try { jBox._audio[options.url].currentTime = 0; } catch (e) {}
为什么在这里尝试捕获?我理解try catch的用法,但是在这段代码的上下文中我无法理解其用法。有人可以解释一下吗?
我正在谈论的代码行 HERE 。
答案 0 :(得分:2)
从HTML5规范(强调我的):
在设置时,如果媒体元素具有当前媒体控制器,则 用户代理必须抛出InvalidStateError异常;除此以外, 如果媒体元素的readyState为HAVE_NOTHING,则必须设置 媒体元素的默认播放开始位置为新值; 否则,必须将官方播放位置设置为新值 然后寻求新的价值。
处理浏览器还不知道如何更新播放时间的情况。