首页 > 解决方案 > 当 YouTube API iFrame 命中超过 75% 的视频时执行一次函数

问题描述

我试图在通过 YouTube API 播放 iFrame 时运行一个函数,但它执行的次数太多。我试图用 bool 标记该函数无济于事。我已经坚持了几个小时。请帮忙,大声笑。

如何限制此功能在视频播放时仅运行一次?

    var completedMajority = false;

    function onPlayerStateChange(event, tID, tName, isThereAnExam, time) {

        if (event.data == 1) { // playing

            myTimer = setInterval( function(){ 
                var time;
                    time = player.getCurrentTime();
                    minutes = parseInt(time / 60, 10);
                    seconds = parseInt(time % 60, 10);

                    minutes = minutes < 10 ? "0" + minutes : minutes;
                    seconds = seconds < 10 ? "0" + seconds : seconds;
                    timeDuration = localStorage['timeDuration'];
                    majorityOfVid = timeDuration / 4 * 3;

                    console.log(time);
                    
                    if (!completedMajority && time >= majorityOfVid) {
                        completedMajority = true;
                        majorityOfModuleCompleted(isLive, baseURL)
                    }

                    console.log(completedMajority);

                $('#thisIsTheFinalCountdown').text(minutes + ":" + seconds);

            }, 100);
        }
        else { // not playing
            clearInterval(myTimer);
        }

标签: javascriptjqueryyoutube-apifrontend

解决方案


整个函数,在你的 first 之前if,应该包含在:

if (!completedMajority) {
 [...]
}

推荐阅读