如何将HTML5视频元素伪造成错误以测试错误处理

时间:2016-05-27 13:21:17

标签: javascript html5 error-handling html5-video

我目前正在开发HTML5视频播放器并连接错误事件监听器,但到目前为止还没有错误。

有没有办法伪造/模拟错误,以测试它是否正常工作?

也许我可以调用它来强制它出错?

2 个答案:

答案 0 :(得分:4)

没有方法可以在浏览器中模拟错误。您必须自行设置环境以模拟错误(error以及abort事件):

  • 创建两个错误文件:一个有容器错误(截断文件大小),另一个有编码错误(十六进制编辑文件并覆盖一些数据)
  • 另外使用指向不存在文件的URL
  • 设置服务器脚本,该脚本可以终止文件服务或将测试站点关闭
  • 设置可以禁用网络接口的脚本

然后针对每个方案运行特定测试,以查看代码的行为方式。

可以调度自定义事件,但问题是它不会阻止浏览器加载文件,这意味着您仍然可以获得可能存在冲突的加载事件等。

可以通过在播放视频时更改视频源来生成abort事件 - 这可能(如果您允许交换相同媒体元素的来源)您需要的内容处理,因为在这种情况下技术上不是错误。

答案 1 :(得分:1)

我不知道任何内置方法来模拟错误。我想你可以创建一个错误事件并将其发送到你的<source>元素之一。

function simulateError() {
  // I'm not sure if it would be better to use ErrorEvent()
  // Using Chrome devtools, this gives an error event that appears
  // almost identical to having a source that gets a 404
  var event = new Event('error', {
    'view': window,
    'cancelable': true
  });
  var src = document.getElementById('sourceElement'); 
  src .dispatchEvent(event);
}

另一种方法是遵循@andlrc的建议:给它一个破碎的视频或切断互联网。当源无效时我收到错误,所以你也可以试试。