javascript audio currentTime崩溃了一些浏览器

时间:2015-03-18 20:30:43

标签: javascript html audio

我在我的应用中播放的音频有问题。我有HTML音频:

    <audio id="correct-sound">
        <source src="sounds/catch.mp3" type="audio/mpeg">
    </audio>

然后在我的游戏中我有这样的代码

    jQuery('#correct-sound').get(0).currentTime = 0;
    jQuery('#correct-sound').get(0).play();

但是对于某些浏览器,它会崩溃所有脚本。我已经包含了较旧的firefox尝试,捕获,但它没有帮助其他一些其他设备(在Firefox帮助)

try{
    jQuery('#correct-sound').get(0).currentTime = 0;
    jQuery('#correct-sound').get(0).play();
}catch(err){
    console.log(err);
}

问题是我无法复制该错误,但当我删除某些浏览器的代码时,此崩溃被删除了。所以我只是需要以某种方式,如果有崩溃,所以他们可以跳过这部分继续前进,就像尝试捕获。有什么想法吗?

3 个答案:

答案 0 :(得分:0)

认为这应该有效:

if (typeof jQuery('#correct-sound').get(0).currentTime !== 'undefined') {
  jQuery('#correct-sound').get(0).currentTime = 0;
}

答案 1 :(得分:0)

audio元素是一个新的HTML5元素,并且其功能在所有浏览器中都不存在。检查它是当前的当前支持here

目前,我会检查Audio是否存在:

if (window.Audio !== undefined) {
    jQuery('#correct-sound').get(0).currentTime = 0;
    jQuery('#correct-sound').get(0).play();
}

答案 2 :(得分:0)

我一直在Google Chrome上工作并遇到了这个问题。奇怪的是,过去我一直在努力改变视频中的时间,所以我知道这是可能的。

我似乎记得一个技巧,如果你将currentTime设置为一个字符串而不是一个数字,它就可以了。所以我换了

audio.currentTime=0;

audio.currentTime="0";

现在它没有任何问题!

如果您尝试将currentTime设置为变量值,请尝试:

audio.currentTime=String(newTime);

我不确定为什么必须将currentTime设置为字符串,因为如果在控制台中检查音频剪辑的currentTime值,您将得到一个数字,而不是字符串。但它有效!

编辑:有趣且头疼,如果我在控制台中更改currentTime,但使用数字(不是字符串)设置它可以正常工作。因此,我猜控制台影响currentTime的方式与我的外部JavaScript文件不同。将currentTime更改为控制台中的数字,无论我之前是否已将其更改为字符串。