媒体源加载失败时没有错误事件

Chr*_*ker 4 javascript html5-audio

我有一个audio元素,其中包含多个源,所有源均由流服务提供。我们遇到了用户上限,因此流因403 http错误而失败。

每个源失败并在控制台("Max listeners reached")中出现一个单独的错误后,在控制台中输出了最终错误,

“所有候选资源均无法加载。媒体加载已暂停。”

但是,没有在元素上引发错误事件。我尝试了脚本附件:

$(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
};
Run Code Online (Sandbox Code Playgroud)

...我尝试了内联javascript:

<script>
    var playerError = function () {
        // does not get triggered
    }
</script>
<audio onerror="playerError()"...
Run Code Online (Sandbox Code Playgroud)

... 没有。

这是我的HTML(已删除URL):

<audio id="audioPlayerElement" controls preload="auto" >
    <source src="http://[STREAM_URL].ogg" type="audio/ogg">
    <source src="http://[STREAM_URL].mp3" type="audio/mp3">
    <source src="http://[STREAM_URL].wav" type="audio/wav">
</audio>
Run Code Online (Sandbox Code Playgroud)

我想念什么吗?我通读了MDN上的媒体事件文档,但没有发现针对这种情况的任何其他事件,error似乎是合适的选择。我的目标是检测媒体不会加载的事实并将其传达给用户。

在Firefox,Safari和Chrome中进行了测试,结果相同。

小智 5

我很好奇,因此我尝试了一下,发现如果将onerror附加到各个源,则将触发事件处理函数。

<audio id="audioPlayerElement" controls preload="auto">
  <source src="whatever" type="audio/ogg" onerror="playerError()">
  <source src="whatever" type="audio/mp3" onerror="playerError()">
  ...
</audio>
Run Code Online (Sandbox Code Playgroud)