Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.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:如何捕获在video.play()中加载视频时出现的错误?_Javascript_Html5 Video - Fatal编程技术网

Javascript:如何捕获在video.play()中加载视频时出现的错误?

Javascript:如何捕获在video.play()中加载视频时出现的错误?,javascript,html5-video,Javascript,Html5 Video,详细说明了它如何在现代浏览器中返回承诺,以及如果视频无法播放,它将被拒绝 在我的测试中,我发现这在视频未播放时效果很好,因为自动播放策略问题,例如未静音,,但是,,我还发现,如果视频的URL为404或内容类型错误,它不会被拒绝 有没有办法捕捉到这样的加载错误?或者这是对Chrome、Firefox、Safari和其他浏览器的功能要求 我这里有一个示例代码笔: 在其中,我根据以下配置生成视频: const ROWS = [ { title: 'Video URL is good',

详细说明了它如何在现代浏览器中返回承诺,以及如果视频无法播放,它将被拒绝

在我的测试中,我发现这在视频未播放时效果很好,因为自动播放策略问题,例如未静音,,但是,,我还发现,如果视频的URL为404或内容类型错误,它不会被拒绝

有没有办法捕捉到这样的加载错误?或者这是对Chrome、Firefox、Safari和其他浏览器的功能要求

我这里有一个示例代码笔:

在其中,我根据以下配置生成视频:

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!在一些初始测试中,我将其附加到
视频
,但我在您发布的链接中看到,浏览器现在在
元素上抛出错误(应该在最后一个元素上进行检查)。