我正在寻找添加一些错误处理到一个简单的HTML5视频元素。 即时通讯使用此块的代码出现到处online:HTML 5视频。用源元素而不是attr返回播放错误
JS
function playbackFailed(e) {
// video playback failed - show a message saying why
switch (e.target.error.code) {
case e.target.error.MEDIA_ERR_ABORTED:
alert('You aborted the video playback.');
break;
case e.target.error.MEDIA_ERR_NETWORK:
alert('A network error caused the video download to fail part-way.');
break;
case e.target.error.MEDIA_ERR_DECODE:
alert('The video playback was aborted due to a corruption problem or because the video used features your browser did not support.');
break;
case e.target.error.MEDIA_ERR_SRC_NOT_SUPPORTED:
alert('The video could not be loaded, either because the server or network failed or because the format is not supported.');
break;
default:
alert('An unknown error occurred.');
break;
}
}
HTML
<video id="a" src="tgif.vid" autoplay controls onerror="playbackFailed(event)" poster="http://img.rasset.ie/000736d2-512.jpg" width="620" height="400"></video>
以上工作正常,我得到一个活泼的警告框页面加载时。
但是,如果我没有“src”属性,而是使用<video>
元素中的<source>
标记“onerror(event)”不会触发?示例标记:
<video id="b" autoplay controls onerror="playbackFailed(event)" poster="http://img.rasset.ie/000736d2-512.jpg" width="620" height="400">
<source src="tgif.vid">
</video>
注意我给出了两个视频元素,分别位于ID“a”和“b”之上。
有人可以解释为什么在下面的代码:
<script>
var a = document.getElementById('a');
var b = document.getElementById('b');
a.addEventListener('error', function(e){alert('error event on a')});
b.addEventListener('error', function(e){alert('error event on b')});
</script>
我只得到了“A”,而不是“B”
我需要使用<source>
标签,因为我将有一个警报针对不同的设备的多个媒体类型等
预先感谢任何答案/评论
小号
你有没有与其他浏览器验证呢? – Joseph 2013-04-09 10:02:10
尝试添加侦听器到b的源标签,而不是视频标签 – Neil 2013-04-09 10:40:10