我试图在player.getCurrentTime() == 10
秒时触发功能(以及更多像这样的间隔)
我可以用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()是一个计时器类型的变量,它为每个ms更改
YT API:https://developers.google.com/youtube/iframe_api_reference
答案 0 :(得分:1)
这个想法是你使用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);
};