Javascript:如何捕获在video.play()中加载视频时出现的错误?
详细说明了它如何在现代浏览器中返回承诺,以及如果视频无法播放,它将被拒绝 在我的测试中,我发现这在视频未播放时效果很好,因为自动播放策略问题,例如未静音,,但是,,我还发现,如果视频的URL为404或内容类型错误,它不会被拒绝 有没有办法捕捉到这样的加载错误?或者这是对Chrome、Firefox、Safari和其他浏览器的功能要求 我这里有一个示例代码笔: 在其中,我根据以下配置生成视频:Javascript:如何捕获在video.play()中加载视频时出现的错误?,javascript,html5-video,Javascript,Html5 Video,详细说明了它如何在现代浏览器中返回承诺,以及如果视频无法播放,它将被拒绝 在我的测试中,我发现这在视频未播放时效果很好,因为自动播放策略问题,例如未静音,,但是,,我还发现,如果视频的URL为404或内容类型错误,它不会被拒绝 有没有办法捕捉到这样的加载错误?或者这是对Chrome、Firefox、Safari和其他浏览器的功能要求 我这里有一个示例代码笔: 在其中,我根据以下配置生成视频: const ROWS = [ { title: 'Video URL is good',
const ROWS = [
{
title: 'Video URL is good',
src: 'http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4',
muted: true
},
{
title: 'Video URL is a 404',
src: '/DOES-NOT-EXIST.mp4',
muted: true
},
{
title: 'Video URL is a bad source type (HTML page instead of video)',
src: 'https://www.example.com/',
muted: true
},
{
title: 'Video URL is good, but not muted',
src: 'http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4',
muted: false
}
];
以下是结果的屏幕截图:
加载文件失败需要通过将“错误”事件附加到视频中的源元素(或者如果直接在视频中指定了src而没有源元素,则可能是视频)来单独观看
sourceElt.addEventListener('error',evt=>{
console.log('Error');
});
我更新了代码笔,在视频中添加了一个包含多个源元素的示例。由于videos元素是为尝试多个而构建的,因此您应该只侦听最后一个源元素上的错误(或者在与源元素匹配之前求和错误-我还没有验证是否可以自上而下运行)
@AdamH指向另一篇帖子的评论中提供了有用的信息:您应该在事件中连接错误处理程序。是一篇关于该活动的帖子。非常好,谢谢@AdamH!在一些初始测试中,我将其附加到
视频
,但我在您发布的链接中看到,浏览器现在在源
元素上抛出错误(应该在最后一个元素上进行检查)。