Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   неактивная вкладка браузера (https://javascript.ru/forum/misc/41049-neaktivnaya-vkladka-brauzera.html)

PavelGor 29.08.2013 17:42

неактивная вкладка браузера
 
Здравствуйте. Возник вопрос. Как заставить скрипт работать при неактивной вкладки? Запускаю скрипт с помощью события OnLoad

Яростный Меч 29.08.2013 18:34

window.onblur

PavelGor 30.08.2013 14:00

Цитата:

Сообщение от Яростный Меч (Сообщение 269928)
window.onblur

Не то. Я в теги <body> запускаю функцию с помощью события onLoad. все происходит замечательно все работает пока я на вкладке. Но как только перехожу в другую вкладку происходит вот что. Функция работает но не с заданной задержкой, а на много медленней. Но скрипт при этом работает.

Как отрегулировать данную ситуацию?

Вот сам скрипт:
var delay = 2; // задержка изменения очков здоровья
var TimerOn = -1;
var tkHP, HP, tkMP, MP;
var speed=100;
var mspeed=100;


//-- Смена хитпоинтов (очков здоровья) со временем
function setEnergy(valueHP, maxHP, valueMP, maxMP, newspeed, name) {
	tkHP=valueHP; 
	HP=maxHP; 
	tkMP=valueMP; 
	MP=maxMP;
	nickname=name;
	
	if (TimerOn>=0) {
		clearTimeout(TimerOnHP); 
		TimerOn=-1;
	}
	
	speed=newspeed;
	setEnergylocal();
}

function setEnergylocal(){
	if (tkHP>HP) { 
		tkHP=HP; 
		$.ajax({
			url:'classes/chars.php',
			type:  "GET",
			data:{
				HP: tkHP,
				MP: tkMP,
				NickName: nickname
			},
			cache:  false,
			success: function(response){
				if(response  == "no"){
					alert('Error 1!');
				}
			}
		
		});
	}
	
	if (tkMP>MP) { 
		tkMP=MP; 
		$.ajax({
			url:'classes/chars.php',
			type:  "GET",
			data:{
				HP: tkHP,
				MP: tkMP,
				NickName: nickname
			},
			cache:  false,
			success: function(response){
				if(response  == "no"){
					alert('Error 1!');
				}
			}
		
		});
	}
	
	var sz1 = Math.round((190/HP)*tkHP);
	var sz2 = 0;//186 - sz1;
	
	var sz3 = Math.round((190/MP)*tkMP);
	var sz4 = 0;//186 - sz3;
	
	if (document.all("HP") && document.all("MP")) {
		document.HP1.width=sz1;
		document.HP2.width=sz2;
		
		document.MP1.width=sz3;
		document.MP2.width=sz4;
		
		document.HP1.src='img/chars/stats/1red.gif'; 
		document.MP1.src='img/chars/stats/1blue.gif'; 
		
		var s = document.all("HP").innerHTML;
		document.all("HP").innerHTML = s.substring(0, s.lastIndexOf(':')+1) + "</span><div class='coll_up'>" + (tkHP/HP*100).toFixed(1)+"%</div>";
		
		var s = document.all("MP").innerHTML;
		document.all("MP").innerHTML = s.substring(0, s.lastIndexOf(':')+1) + "</span><div class='coll_up'>" + (tkMP/MP*100).toFixed(1)+"%</div>";
	}
	
	tkHP = (tkHP+(HP/100)*speed/1000);
	tkMP = (tkMP+(MP/100)*speed/1000);
	
	if (tkHP<HP || tkMP<MP) { 
		TimerOn=setTimeout('setEnergylocal()', delay*100);
	
		$.ajax({
			url:'classes/chars.php',
			type:  "GET",
			data:{
				HP: tkHP,
				MP: tkMP,
				NickName: nickname
			},
			cache:  false,
			success: function(response){
				if(response  == "no"){
					alert('Error 1!');
				}
			}
		
		});
	}else { 
		TimerOnHP=-1;
	}
}


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