2014-09-19 74 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 
});