Javascript Youtube Iframe API:特定getcurrenttime()上的触发器函数
我试图在Javascript Youtube Iframe API:特定getcurrenttime()上的触发器函数,javascript,youtube-api,dom-events,Javascript,Youtube Api,Dom Events,我试图在player.getCurrentTime()==10sec(以及更多类似的间隔)时触发函数 我可以用JS计时事件来实现这一点,但它并不准确,而且会大大降低我的浏览器速度 有备用的吗 当前代码: trigFuncAt = Array(3, 5, 7, 10); setInterval(checkFunc(), 200); function checkFunc(){ if( include( trigFuncAt, player.getCurrentTime() ) ){
player.getCurrentTime()==10
sec(以及更多类似的间隔)时触发函数
我可以用JS计时事件来实现这一点,但它并不准确,而且会大大降低我的浏览器速度
有备用的吗
当前代码:
trigFuncAt = Array(3, 5, 7, 10);
setInterval(checkFunc(), 200);
function checkFunc(){
if( include( trigFuncAt, player.getCurrentTime() ) ){
DoThis();
}
}
function include(arr,obj) {
return (arr.indexOf(obj) != -1);
}
function DoThis(){...}
player.getCurrentTime()
是一种计时器类型的变量,它每毫秒改变一次
YT API:这个想法是使用setTimeout而不是setInterval,因为您不能保证函数需要在间隔时间之间执行的时间足够长。您还需要强制转换为int当前时间。示例代码:
// implicit global video containing YT video
var keypoints = [1, 2, 3, 10, 15];
var updatePlayerInfo = function() {
var played,
i = 0,
keypoint;
// not ready?
if (!video.getCurrentTime) {
return false;
}
// ready!
if (played = parseInt(video.getCurrentTime(), 10)) {
for (; keypoint = keypoints[i++]; ) {
if (keypoint === played) {
// do something
doSomething();
break;
}
}
}
// throttle function!
setTimeout(function(){
updatePlayerInfo();
}, 250);
};
这很好,但我认为'var played'应该在updatePlayerInfo函数外/之前声明,否则它每次都会被重置,每个关键点调用doSomething的次数为3/4次。@ozke播放的是函数的本地,因为它只会暂时存储当前时间。您甚至可以忽略它并多次调用parseInt。再次感谢您的示例。我想说的是,如果您按原样运行代码,它将在标记为关键点的每秒钟内多次调用doSomething。这是期望的结果吗?@ozke它不会那样做的。试试看。有一个
break
和doSomething
是FPO。