创建音频元素时为什么尝试捕捉

时间:2015-08-02 21:04:44

标签: javascript jquery

我刚刚浏览了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

1 个答案:

答案 0 :(得分:2)

从HTML5规范(强调我的):

  

在设置时,如果媒体元素具有当前媒体控制器,则   用户代理必须抛出InvalidStateError异常;除此以外,   如果媒体元素的readyState为HAVE_NOTHING,则必须设置   媒体元素的默认播放开始位置为新值;   否则,必须将官方播放位置设置为新值   然后寻求新的价值。

处理浏览器还不知道如何更新播放时间的情况。