Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 媒体源加载失败时无错误事件_Javascript_Html5 Audio - Fatal编程技术网

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>