YouTube API – 获取全局变量中的当前时间

这里有jsfiddle http://jsfiddle.net/StephanieQ/oo1g1762/

// This code loads the IFrame Player API code asynchronously. var tag = document.createElement("script"); tag.src = "//www.youtube.com/iframe_api"; var firstScriptTag = document.getElementsByTagName("script")[0]; firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); // This function creates an  (and YouTube player) // after the API code downloads. var player; window.onYouTubeIframeAPIReady = function() { player = new YT.Player("player", { "height": "315", "width": "560", "videoId": "bHQqvYy5KYo", "events": { "onReady": onPlayerReady, "onStateChange": onPlayerStateChange } }); } // 4. The API will call this function when the video player is ready. function onPlayerReady(event) { event.target.playVideo(); } function onPlayerStateChange(event){ var time; time = player.getCurrentTime(); $("#timeHolder").text(time); } 

我正在使用youTube的播放器对象方法player.getCurrentTime(); 找出嵌入式youTubevideo的时间。 如您所见,每次更改播放器状态时,都会重新定义“时间”并将其插入timeHolder div中。 是否有任何方法可以连续定义“时间”,以便它与当前时间匹配并在更新时插入div中? (不是由玩家状态改变引发的?)

更重要的是,我正在玩这个,因为我希望能够使用youTubevideo上的当前时间与其他外部脚本进行交互,如何使其全局化?

使用setInterval()重复该function。 当even.data等于1表示youtube正在播放时,让函数重复。 否则不播放,然后使用clearInterval()来停止重复function。

 var myTimer; function onPlayerStateChange(event){ if(event.data==1) { // playing myTimer = setInterval(function(){ var time; time = player.getCurrentTime(); $("#timeHolder").text(time); }, 100); // 100 means repeat in 100 ms } else { // not playing clearInterval(myTimer); } } 

在这里看到j​​sfiddle