等待事件未触发

时间:2018-08-24 17:08:41

标签: javascript html5 video-streaming

我不明白为什么等待事件没有触发。

基本上,我希望每当视频缓冲时,容器中的动画都能正常工作。

还有其他需要注意的事件吗?

function play() {
  var elem = document.getElementById("animate");
  var pos = 0;
  var id = setInterval(frame, 5);

  function frame() {
    if (pos == 350) {
      clearInterval(id);
    } else {
      pos++;
      elem.style.top = pos + 'px';
      elem.style.left = pos + 'px';
    }
  }
}
#container {
  width: 400px;
  height: 400px;
  position: relative;
  background: yellow;
}

#animate {
  width: 50px;
  height: 50px;
  position: absolute;
  background-color: red;
}
<video onwaiting="play()" controls autoplay>
   <source src = "bleach-cool-mp3.webm" type="video/webm" >
</video>
<div id="container">
  <div id="animate"></div>
</div>

1 个答案:

答案 0 :(得分:2)

两件重要的事情:

第一:您无法命名函数play(),因为它是视频api的reserved keyword,因此您必须对其进行重命名

第二:您的onwaiting事件运行正常,但仅在您的视频需要抛光下一帧时才会触发(例如慢速连接问题)。如果要在视频搜索要显示的数据(例如第一次加载)时触发它,请使用onloadstart事件:

亲爱的,您的工作摘要:

function PlayAnimation() {
  var elem = document.getElementById("animate");
  var pos = 0;
  var id = setInterval(frame, 5);

  function frame() {
    if (pos == 350) {
      clearInterval(id);
    } else {
      pos++;
      elem.style.top = pos + 'px';
      elem.style.left = pos + 'px';
    }
  }
}
#container {
  width: 400px;
  height: 400px;
  position: relative;
  background: yellow;
}

#animate {
  width: 50px;
  height: 50px;
  position: absolute;
  background-color: red;
}
<video onwaiting="PlayAnimation()" onloadstart="PlayAnimation()" controls autoplay>
   <source src = "https://www.w3schools.com/tags/mov_bbb.mp4" type="video/mp4" >
</video>
<div id="container">
  <div id="animate"></div>
</div>