2015-05-08 80 views
0

我正在使用JavaScript代码来检测视频是否已加载。将javascript添加到html标记

一旦它被加载,我想添加一个自动播放属性到标签,使其播放,但我找不到添加该属性的方法。这里是我使用的代码:

window.addEventListener('load', function() { 
    var video = document.querySelector('#bgvid'); 
    var div = document.getElementById('#bgvid'); 

    function checkLoad() { 
     if (video.readyState === 4) { 
      alert('video is loaded') 
      video.setAttribute("autoplay") 
     } else { 
      setTimeout(checkLoad, 100); 
     } 
    } 

    checkLoad(); 
}, false); 

*******************解决方案*************** *****

首先,谢谢DontVoteMeDown的帮助。

正确的代码应该是:

document.getElementById('bgvid').addEventListener('canplaythrough', function() { 
    this.play(); 
    }); 

回答

1

为什么不将属性添加到标签?从docs

自动播放:(......)视频会自动开始,只要它可以这样做,回放没有停下来完成加载数据。

所以我认为(不确定,确实)视频将尽快加载视频的一部分开始播放。

无论如何,如果你仍然要添加的属性,该video标签有一些Events,从文档:

  • canplay:当足够的数据可用,媒体可以发挥,至少已发送几帧;
  • canplaythrough:当就绪状态改变为CAN_PLAY_THROUGH时发送,表示整个媒体可以不间断地播放(...);

所以,你可以使用其中一个事件来设置该属性,e.g:

document.getElementById('bgvid').addEventListener('canplay', function() { 
    this.setAttribute("autoplay", "autoplay"); 
}); 

有了这个,你能避免使用超时,这是不是最好的方法。

+0

我知道自动运行,应该使视频开始播放,只有当足够的数据缓冲,但实际上每个浏览器的行为不同,有时视频被卡住,这就是为什么我喜欢先负载完整的视频,然后才能播放它 –

+1

您的代码很好 - 需要更改的一个方面是setattribute,因为在加载文档后添加自动播放属性并没有帮助。适当的解决方案是添加video.play() –

+0

@EyalBinehaker很好,你结束了完美的解决方案。 – DontVoteMeDown

1

启用自动播放功能时,不需要检查其加载状态,视频只会在加载时播放。

video.autoplay = true; 

here

+0

感谢您的帮助,因为在文档加载后添加自动播放属性并没有帮助。适当的解决方案是video.play()。 –

相关问题