我在我的应用中播放的音频有问题。我有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);
}
问题是我无法复制该错误,但当我删除某些浏览器的代码时,此崩溃被删除了。所以我只是需要以某种方式,如果有崩溃,所以他们可以跳过这部分继续前进,就像尝试捕获。有什么想法吗?
答案 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更改为控制台中的数字,无论我之前是否已将其更改为字符串。