2015-02-23 230 views
1

我遇到了videojs的问题:将eventlistener附加到“loadedmetadata”事件时,回调函数永远不会执行。Video.js - loadedmetadata事件永远不会触发

我发现的最佳解释似乎是,Video.js绑定事件侦听器之前可能会触发一些事件:Video.js - loadeddata event never fires

不幸的是,在这篇文章中提出的解决方案似乎并不适合我。

<!DOCTYPE html> 
<html> 
<head> 
<title>test</title> 
<link href="http://vjs.zencdn.net/4.12/video-js.css" rel="stylesheet"> 
<script src="http://vjs.zencdn.net/4.12/video.js"></script> 
<script src="http://code.jquery.com/jquery-2.0.3.min.js"></script> 
    <script type="text/javascript"> 
     function init() { 
      var video = document.getElementById('myVideo'); 
      video.addEventListener("loadedmetadata", function() { 
       alert("test"); 
      }); 
     } 
     window.addEventListener("load", init); 
    </script> 
</head> 
<body> 
    <video id='myVideo' class="video-js vjs-default-skin" controls data-setup='{}'> 
     <source id='mp4' src="http://goo.gl/fAHXgj" type='video/mp4'> 
     <source id='webm' src="http://goo.gl/03LOHW" type='video/webm'> 
    </video> 
</body> 
</html> 

当我从Visual Studio(2013)启动它时,上面的代码产生一个只在IE(11)弹出的警告;它不适用于Firefox或Chrome。

当我在我的网站上发布它时,它永远不会工作。 我错过了什么?感谢您的阅读!

回答

1

在使用video.js时,您需要使用它的API,例如,

videojs('myVideo').on('event',function); 

更妙的是,除去data-setup属性,并通过调用如果要videojs()有一个回调函数一起创建播放机作为播放机准备好尽快执行:

videojs('myVideo', {}, function(){ 
    this.on('loadedmetadata', function(){ 
    alert('lmd'); 
    }); 
}); 
0

正如misterben说,请使用.on方法。但把它放在ready回调或将无法正常工作:

var player = videojs('myVideo'); 
player.ready(function(){ 
    this.on('loadedmetadata', function(){ alert('lmd'); }) 
}); 

来源:只是这出自己。 我知道misterben已经提到使用ready回调,但是您可能不知道您需要需要才能使用它。

相关问题