Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Приостановить работу скрипта, если браузер свернут, либо с вкладки перешли (https://javascript.ru/forum/jquery/58510-priostanovit-rabotu-skripta-esli-brauzer-svernut-libo-s-vkladki-pereshli.html)

alecto 26.09.2015 12:40

Приостановить работу скрипта, если браузер свернут, либо с вкладки перешли
 
Имеется следующий скрипт:

function DisableAgree() {
	var element = document.getElementById('agreed');
	element.style.pointerEvents = "none";
	element.style.opacity = "0.5";
	element.style.visibility = "visible" ;
	element.style.setProperty('width', '226px', 'important');
		countdown(60);
};

function EnableAgree() {
	var element = document.getElementById('agreed');
	element.setAttribute("value", '{L_AGREE}');
	element.removeAttribute("style");
};

var checkLoad = function() {   
	document.readyState !== "complete" ? setTimeout(checkLoad, 11) : DisableAgree();   
};

function countdown(seconds_) {
	var seconds = seconds_;
	function tick() {
		var counter = document.getElementById("agreed");
		seconds--;
		counter.setAttribute("value", '{L_TIME_BEFORE_REGISTRATION}' + (seconds < 10 ? "" : "") + String(seconds) + ' {L_SECONDS}');
	        if( seconds > 0 ) {
        		setTimeout(tick, 1000);
		} else {
			EnableAgree();
		}
	}
	tick();
};

	checkLoad();


Можно ли приостановить работу таймера (ф-я countdown), если браузер свернут, либо если с вкладки перешли на другу вкладку? и продолжить при возвращении на вкладку с текущей страницей?
Если конечно такое решение существует и не будет слишком громоздким, потому как я совсем начинающий в этом вопросе.


PS: если тема создана не в том разделе, прошу простить и перенести в подходящий в более раздел.

dd_smol 27.09.2015 23:06

Попробуй поиграться с получением и потери фокуса окна.
$(window).focus(function (e) { /* ... */ });
$(window).blur(function (e) { /* ... */ });

рони 28.09.2015 00:22

alecto,
Page_Visibility_API

dd_smol 28.09.2015 09:28

Интересное решение. Не знал.:)

alecto 28.09.2015 23:03

спасибо! попробую.


Часовой пояс GMT +3, время: 10:26.