YouTube API - 在全局变量中获取当前时间
YouTube API - Getting current time in a global variable
在这个 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 <iframe> (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();找出嵌入式 YouTube 视频的时间。如您所见,每次播放器状态更改时,都会重新定义 "time" 并将其插入到 timeHolder div 中。有什么方法可以连续定义 "time" 以匹配当前时间并在更新时插入 div 吗? (不是由玩家状态变化触发?)
更重要的是,我正在玩这个,因为我希望能够使用 youTube 视频上的当前时间与其他外部脚本进行交互,我怎样才能使其全局化?
使用setInterval()
重复函数。当 even.data 等于 1 时表示 youtube 正在播放,所以让函数重复。否则不播放,则用clearInterval()
停止重复播放功能。
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);
}
}
参见 jsfiddle here
在这个 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 <iframe> (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();找出嵌入式 YouTube 视频的时间。如您所见,每次播放器状态更改时,都会重新定义 "time" 并将其插入到 timeHolder div 中。有什么方法可以连续定义 "time" 以匹配当前时间并在更新时插入 div 吗? (不是由玩家状态变化触发?)
更重要的是,我正在玩这个,因为我希望能够使用 youTube 视频上的当前时间与其他外部脚本进行交互,我怎样才能使其全局化?
使用setInterval()
重复函数。当 even.data 等于 1 时表示 youtube 正在播放,所以让函数重复。否则不播放,则用clearInterval()
停止重复播放功能。
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);
}
}
参见 jsfiddle here