[英]Check if sound file exists javascript
我有一個HTML5文件,可使用javascript加載聲音。 聲音可能在兩個位置之一中:
../../Apps/應用名稱/ sounds
要么
../../Shared/Sounds
應該發生的是,當調用函數getSound
時,它首先檢查聲音的第一個位置,如果該文件不存在,則轉到第二個。 我之前嘗試過幾件事,但沒有任何效果。
注意:變量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
});
如果文件不存在,則將觸發錯誤事件
mySound = new Audio();
mySound.onerror = function(){ alert("error");};
mySound.src = "xxxx";
問題是這不是同步的。
我認為您所說的很復雜。 當音頻對象加載文件時,找不到文件時,瀏覽器將導致錯誤。 當您要檢查音頻對象是否存在時,只需檢查服務器返回瀏覽器的文件時間即可。
這是正確的功能...
function audiovideoExist(ObjectAV){
var exist = (Number.isFinite(ObjectAV.duration))? true: false;
return exist;
}
因此,如果瀏覽器找到了源,則它將返回true和false。 有效音頻或視頻對象的持續時間值將始終存在。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.