我有一个 HTML5 文件,用 javascript 加载声音。声音可能位于以下两个位置之一:
../../Apps/ 应用名称 /sounds
或者
../../Shared/Sounds
应该发生的是,当函数 getSound
被调用时,它首先检查声音的第一个位置,如果该文件不存在,则转到第二个位置。我之前尝试过一些方法,但都没有用。
N.B 变量blink
存储字符串"../../Apps/ 应用名称"
function getSound(s){
var url = blink + "sounds/" + s;
var testSound = new Audio(url);
if ( isNan(testSound.duration) ){
url = "../../Shared/Sounds";
}
return new Audio(url);
};
这是行不通的,因为显然持续时间在开始播放之前一直保持为 NaN,因此 isNan 函数始终返回 true。
我还尝试了一个我在网上找到的 fileExists
函数:
function fileExists(url){
var http = new XMLHttpRequest();
http.open('HEAD', url, false);
http.send();
return http.status!=404;
}
所以我想问的是,有没有一种方法可以使用 javascript 检查声音文件是否存在,或者您是否可以检查声音文件是否实际加载到您正在使用的变量中。
最佳答案
使用
var sound = new Audio("sample_src");
if(isNaN(sound.duration)) alert("Do something");
编辑:播放音频后有效。 更好的选择:
var sound = new Audio("sample_src");
$(sound).on("canplay",function(){
//Do something if works
});
关于javascript - 检查声音文件是否存在javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29681907/