Javascript 监控youtube视频播放时间

Javascript 监控youtube视频播放时间,javascript,jquery,youtube,youtube-api,youtube-javascript-api,Javascript,Jquery,Youtube,Youtube Api,Youtube Javascript Api,我在HTML页面的iframe中有一个youtube视频。 我想在youtube视频播放达到5秒时触发一些事件 我正在使用youtube api的player.getCurrentTime()方法 HTML代码: <div><iframe id="frameID" width="640" height="390" frameborder="0" title="YouTube video player" type="text/html" src="http://www.youtu

我在HTML页面的iframe中有一个youtube视频。 我想在youtube视频播放达到5秒时触发一些事件

我正在使用youtube api的
player.getCurrentTime()
方法

HTML代码:

<div><iframe id="frameID" width="640" height="390" frameborder="0" title="YouTube video player" type="text/html" src="http://www.youtube.com/embed/u1zgFlCw8Aw?enablejsapi=1"></iframe></div>
目前,如果视频播放达到5秒,我将显示警报框


上面的代码工作正常,但问题是,在这里,我检查每秒钟后的当前时间,直到5秒(如果视频在5秒之前暂停,甚至更多)。这增加了开销。我想要的是,某种方法可以在指定的时间过后调用回调方法,我不需要连续检查时间。

YouTube API没有这种功能;虽然底层HTML5视频将发出“timeupdate”事件,但它根本不会通过播放器的iframe公开。但是,您的监控解决方案没有那么多开销,因此它完全可以做到。@jlmdonald谢谢您提供的信息。只是一个简单的问题-因为我是javascript新手,你能告诉我什么时候我在做
player.getCurrentTime()
,它是在调用服务器还是在客户端自己完成?这都是客户端的;“player”对象是保存YouTube视频的iframe的包装器,调用getCurrentTime()要求iframe的api报告上次发布的时间。请注意,它每秒只更新时间6或7次,因此您不希望轮询的频率超过此频率。
var player;
function onYouTubeIframeAPIReady() {
player = new YT.Player('frameID', {
    events: {
        'onReady': onPlayerReady,
        'onStateChange': stateChange
    }
});
}
var playedFirstTime=0; //to check if the video is played first time
function stateChange(evt) {

         if (evt.data == YT.PlayerState.PLAYING && playedFirstTime==0) {
             playedFirstTime=1
        timestampReached(); //if video is played first time then call the method.
    }

};
function timestampReached()
{

   var myVar= setInterval(function(){   
   if(player.getCurrentTime()>5)   //checking the current time after each second
   {
       alert("reached");
       clearInterval(myVar);

   }
},1000);

}

function onPlayerReady(event) {

//    timestampReached();
}