簡體   English   中英

檢查聲音文件是否存在javascript

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM