Youtube iframe API:特定getcurrenttime()的触发函数

时间:2012-10-13 04:59:15

标签: javascript javascript-events youtube-api

我试图在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

1 个答案:

答案 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);
};