javascript在视频播放器当前时间停止响应

时间:2017-04-13 07:51:06

标签: javascript do-while

var startTime = parent.startTime;
var endTime = parent.endTime;
var divID = '#'+parent.divId;
var description = parent.description;

do {
    var currentTime1 = $('video').get(0).currentTime;
    if(currentTime1 >= startTime) {
        console.log('in if');alert('hi');
        parent.$(divID).append(description);
    }
    setTimeout(function(){$('video').get(0).currentTime = $('video').get(0).currentTime + 1; currentTime1 = parseInt($('video').get(0).currentTime); }, 1000);

} while (currentTime1 <= endTime);

parent.$(divID).empty(); console.log('at end');

以上代码停止响应,debuger显示此行var currentTime1 = $('video')。get(0).currentTime;

2 个答案:

答案 0 :(得分:2)

由于

,您的代码无限循环
do {
    var currentTime1 = $('video').get(0).currentTime;
} while (currentTime1 <= endTime);

它的执行速度与您的浏览器允许的速度一样快,因此卡住了,因为setTimeout将在1秒后执行,而您的currentTime1将永远不会更改。

请更改逻辑 - use video events, like timeupdate

答案 1 :(得分:1)

var startTime = parent.startTime;
            var endTime = parent.endTime;
            var divID = '#'+parent.divId;
            var description = parent.description;

            var myVar = setInterval(check,1000);
function check()
        {
            var currentTime1 = parseInt($('video').get(0).currentTime);

            if(currentTime1 >= parent.endTime) 
            { 
                clearInterval(myVar);
                parent.$(divID).empty(); 
            }
           else if(currentTime1 >= parent.startTime) 
            {  
                parent.$(divID).empty();
                parent.$(divID).append(description);                       
            } 
        }

此代码在没有循环结构的情况下工作。 setInterval()可以反复重复操作。