2014-09-19 76 views
2

看來,<source>元素在<audio>標籤中引入之前,當音頻出現錯誤時,您可以在audio.error.code中看到錯誤代碼。但是,這似乎不再發生。由於錯誤事件現在只發射了孩子<source>元素,不再對音頻標籤,在音頻標籤不再有error屬性(它總是空)。源標籤也不會獲得錯誤屬性。如何檢測音頻標籤與音源的差錯類型

您可以在此jsFiddle看到這一點。

你是如何想現在檢測到的錯誤類型的音頻標籤並沒有得到一個錯誤的財產?看來這是每個瀏覽器中的錯誤。如果你的函數後添加真實

+0

錯誤事件應該還是火... – dandavis 2014-09-19 19:23:35

+0

我看到所有的源代碼(鉻37.0.2062.120在Mac)錯誤事件 – 2014-09-19 19:25:21

+1

事件仍會觸發錯誤,那不是我的問題。我的問題是,你怎麼看是什麼錯誤(找不到音頻,沒有互聯網連接等) – 2014-09-19 19:54:35

回答

1

的onerror會火。

var audio = document.getElementById('audio');  
audio.addEventListener('error', function(e) { 
    var noSourcesLoaded = (this.networkState===HTMLMediaElement.NETWORK_NO_SOURCE); 
    if(noSourcesLoaded) console.log("could not load audio source"); 
}, true); 
+0

是networkState我們唯一的屬性來檢測被拋出什麼類型的錯誤?它似乎只擅長檢測404錯誤。 – 2014-09-19 20:29:20

+0

我不知道,我只知道HTML5的音頻/視頻的東西的基礎知識。你總是可以檢查'this'和'HTMLMediaElement',看看他們有什麼其他的屬性。 – epascarello 2014-09-19 20:32:49

0

在Angular中,您可以觸發此事件以瞭解aodio是否確實加載或未加載。

this.audio.addEventListener('error',()=> { 
console.log("could not load audio source"); 
///Do your thing 
});