javascript - 检查声音文件是否存在javascript

标签 javascript html audio

我有一个 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/

相关文章:

javascript - 后续 AJAX 调用之间的最短时间

javascript - 切换按钮的 jQuery 媒体查询 - 根据屏幕宽度不同的操作

javascript - 无法在控制台中删除变量

audio - 如何使用 Swift 3 在 App 中共享音频文件?

javascript - HTML5 网络音频 - 减慢音频播放提前中断

c# - CSCore应用程序音频混音器名称+峰值

javascript - 如何通过 wp_register_script 添加多个 javascript?

javascript - 如何让网页上的图片自动刷新

javascript - fadeIn() 不触发,但其他一切都是

html - 如何将背景图像作为 block 重复