2013-05-16 54 views
14

我即将尝试完全预装HTML5中的视频。我使用属性“preload = auto”,但它不预装整个视频...在Chrome中,视频只有2%的预加载。在Safari中,正负50%... 我的问题是:“我们可以用javascript强制预装视频吗?” 谢谢你的帮助!这里使用Javascript强制完整预加载HTML5视频?

+0

同样的问题:我需要预装Chrome的完整的视频...可惜我还没有找到一个解决办法,我也试着使用XMLHttpRequest的方式,但我还没有允许的错误..我希望有一个解决方案.. – 2014-09-04 07:58:35

回答

10
function addSourceToVideo(element, src, type) {  
    var source = document.createElement('source');  
    source.src = src;  
    source.type = type;  
    element.appendChild(source);  
} 

var video;  
$(document).ready(function(){  
    video = document.getElementsByTagName('video')[0];  
    addSourceToVideo(video, "http://your-server.com/clip.ogv", "video/ogv");  
    addSourceToVideo(video, "http://your-server.com/clip.mp4", "video/mp4");  
    video.addEventListener("progress", progressHandler,false);  
}); 

progressHandler = function(e) {  
    if(video.duration) {  
     var percent = (video.buffered.end(0)/video.duration) * 100;  
     console.log(percent);  
     if(percent >= 100) {  
      console.log("loaded!");  
     }  
     video.currentTime++;  
    }  
} 
+0

这是一个很好的解决方案。对于后台加载,只需在视频标签上调用createElement即可。另外,Chin-Chan的+1! – deepelement

+0

bindKeys函数做什么?或者这只是从复制粘贴中留下的东西?现在我注意到索引变量。 – DBS

+0

@DBS是的,它是从复制粘贴留下的,答案已更新。谢谢 !! –