Javascript 媒体源加载失败时无错误事件
我有一个Javascript 媒体源加载失败时无错误事件,javascript,html5-audio,Javascript,Html5 Audio,我有一个音频元素,有几个源,都是由流媒体服务提供的。我们遇到了一个用户cap,因此流失败,出现403个http错误 每个源失败后,控制台中出现一个单独的错误(“已达到最大侦听器数”),控制台中输出最后一个错误 “加载所有候选资源失败。媒体加载已暂停。” 但是,没有对元素触发任何错误事件。我尝试了脚本附件: $(document).ready(function () { $('#audioPlayerElement').on('error', function () { /
音频
元素,有几个源,都是由流媒体服务提供的。我们遇到了一个用户cap,因此流失败,出现403个http错误
每个源失败后,控制台中出现一个单独的错误(“已达到最大侦听器数”
),控制台中输出最后一个错误
“加载所有候选资源失败。媒体加载已暂停。”
但是,没有对元素触发任何错误事件。我尝试了脚本附件:
$(document).ready(function () {
$('#audioPlayerElement').on('error', function () {
// does not get triggered
});
$('#audioPlayerElement').error(function () {
// does not get triggered
});
});
$(document).on('error', '#audioPlayerElement', function () {
// does not get triggered
});
document.getElementById('audioPlayerElement').onerror = function () {
// does not get triggered
};
。。。我尝试了内联javascript:
<script>
var playerError = function () {
// does not get triggered
}
</script>
<audio onerror="playerError()"...
var playerror=函数(){
//不会被触发
}
是否可以单独检查媒体URL的响应头?如果是这样,您可以只请求媒体URL的标题,检查除200以外的任何内容,然后向用户提供反馈。可能是一个解决办法。您的代码在我看来很好。我很好奇,所以我仔细研究了一下,发现如果您将onerror附加到各个源,您的事件处理程序函数将被触发
<audio id="audioPlayerElement" controls preload="auto">
<source src="whatever" type="audio/ogg" onerror="playerError()">
<source src="whatever" type="audio/mp3" onerror="playerError()">
...
</audio>
...
<代码>有趣,甚至没有考虑那些元素。我没有看到任何迹象表明这些元素有任何事件,但是MDN文档没有明确声明它们也没有。我希望看到一个银弹的答案,但如果不是,我可能会用这个拼凑一些东西。谢谢
<audio id="audioPlayerElement" controls preload="auto">
<source src="whatever" type="audio/ogg" onerror="playerError()">
<source src="whatever" type="audio/mp3" onerror="playerError()">
...
</audio>