视频播放时javascript增量setInteval计数器

视频播放时javascript增量setInteval计数器

本文介绍了视频播放时javascript增量setInteval计数器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

I have the following code that detect if user is idle or not. On page load, a timer will run and if the user is idle for a certain of seconds the timer will pause and resume if the user is active. And I have also codes that detect if video is playing, if the video is playing timer should run and if the video is stop/pause a timeout will run and detect if the user is still active

The problem is even if video is playing, the timer paused and it will start to idle. What I want is when video is playing timer should countinue to increment.

Heres my code:







function setPlayingVideoToTrue(){playing_video = true;}

    function setPlayingVideoToFalse(){playing_video = false;}

    // check if a video iframe exists
    var iframe_videos = $('body').find('iframe');

    if(iframe_videos.length > 0){
	// create ready events for every iframe
	iframe_videos.each(function(index){
		// add a temporary id for the iframe
		// append additional parameters to the end of the iframe's src
		var temporary_player_id = 'iframe_player_'+ index;
		var new_iframe_src = $(this).attr('src') +'?api=1&player_id='+ temporary_player_id;
		$(this).attr('id', temporary_player_id);
		$(this).attr('src', new_iframe_src);

		// add event listener for ready
		$f(this).addEvent('ready', iframe_ready);
	});

	// when a player is ready, add event listeners for play, pause, finish, and playProgress
	function iframe_ready(player_id) {
		$f(player_id).addEvent('play', setPlayingVideoToTrue);
		$f(player_id).addEvent('playProgress', setPlayingVideoToTrue);
		$f(player_id).addEvent('pause', setPlayingVideoToFalse);
		$f(player_id).addEvent('finish', setPlayingVideoToFalse);
    }
    }


    function start_idle_timer(){
	var timer = 0;
	
	function increment_duration()
	{	
		if(isPaused === false)
		{
			timer++;
		}
		
		// increment timer if video is playing
		if(playing_video === true){
			clearTimeout(idleTimer);
			isPaused = false;
		}


		if(playing_video === false && isPaused === false){

			// stop timer if the user is idle for 3 minutes
		    var idleTimer = setTimeout(function(){
		    	// console.log('idle');
		    	clearInterval(check_time);
		    	isPaused = true;

		    	// a modal will apper to inform that user is on idle state
		    	$('#linkage').trigger('click');
		    	
		    	var modal_timer = 0;
		    	// timer for modal idle timer
		    	continue_modal_timer = setInterval(function(){
		    		modal_timer++;

		    		inactivity_timer = modal_timer;
		    		if(modal_timer == 60)
		    		{
		    			clearInterval(continue_modal_timer);
		    			clearTimeout(idleTimer);	
		    		}
		    	}, 1000)	
			}, 10000);
		}

		// bind to all elements on DOM possible events indicating the user is active
		$('*').bind('mousemove click mouseup mousedown keydown keypress keyup submit change mouseenter scroll resize dblclick', function () {
		   	clearTimeout(idleTimer);
		    isPaused = false;
		});
	}

	// initialize the interval
	check_time = setInterval(increment_duration, 1000); 
    }

    // check if start_timer is present from the loading page to record the time duration of the user
    if($('.start_timer').length > 0){	
	start_idle_timer();
    }

推荐答案




这篇关于视频播放时javascript增量setInteval计数器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-11 13:50