11

在 带有. drawImage_videoNS_ERROR_NOT_AVAILABLE: Component is not available

我试图等待视频标签触发的每个事件:、、、、、、等等playplayingcanplay没有任何效果。这似乎是因为这些事件是在流正确加载到元素之前触发的。loadeddataloadedmetadata<video>

JSFiddle 有错误(可以在控制台查看错误)

副作用是视频的宽度和高度也不正确。

4

1 回答 1

34

这是 Firefox 中的一个错误。最简单的解决方法是继续尝试直到错误消失,因为没有事件在正确的时间触发。

见:http: //jsfiddle.net/9aT63/25/

基本上,您必须将drawImage调用包装在 try/catch 块中。

function drawVideo() {
  try {
    $vidCanvasCtx.drawImage($vid, 0, 0, $vidCanvas.width, $vidCanvas.height);
    ...
  } catch (e) {
    if (e.name == "NS_ERROR_NOT_AVAILABLE") {
      // Wait a bit before trying again; you may wish to change the
      // length of this delay.
      setTimeout(drawVideo, 100);
    } else {
      throw e;
    }
  }
}
于 2013-09-02T21:18:43.400 回答