Autor Zpráva
alt64
Profil *
Zdfravim,
rad bych do sve aplikace pidal primitivni validaci poctu spusteni app pro demoverzi, rozhodl jsme se to udelat pomoci localstorage.

Bohuzel mam probelm s prvnim prirazenim hodnoty count_of_runs, bud spatne pouzivat typeof fci ('undefined' jsem jiz zkousel) , nebo je problem nekde jinde?

Diky za kazdou radu:


function checkValidity()
{
	
	//window.localStorage. clear();
	var countOfRuns = window.localStorage.getItem("count_of_runs");
	
	if(typeof(countOfRuns)==undefined)
	{
		alert('Prvni pristup');
		window.localStorage.setItem("count_of_runs",1);
	}
	
	if(countOfRuns < 5)
	{
		newcountOfRuns  = parseInt(countOfRuns) + 1;
		window.localStorage.setItem("count_of_runs",newcountOfRuns );
		alert('Pocetc spusteni ' + window.localStorage.getItem("count_of_runs")  );
	}
	
	if(countOfRuns >= 5)
	{
		
		//alert(countOfRuns);
		alert('Zkusebni verze vyprsela');
		return false;
	}


	

	
}
Chamurappi
Profil
Reaguji na alta64:
bud spatne pouzivat typeof fci
Ta vrací vždy řetězec.

('undefined' jsem jiz zkousel)
Pokud vím, tak localStorage.getItem vrací při nenalezení položky null, což je hodnota, jejíž typeof je "object".
Proč vůbec chceš používat typeof? Proč nepoužiješ prostě if(countOfRuns)?
alt64
Profil *
Protoze kdyz jsem zkousel if(countOfRuns), tak se porad zasekavam na prvni podmince, coz ji myslim, ze je dano tim, ze hodnota je 1, coz je vj JS i true, takze se to pres ni po druhme a dalsim spusteni nedostane.

	var countOfRuns = window.localStorage.getItem("count_of_runs");
	
	if(countOfRuns)
	{
		alert('Prvni pristup');
		window.localStorage.setItem("count_of_runs",1);
	}
	
	if(countOfRuns < 5)
	{
		newcountOfRuns  = parseInt(countOfRuns) + 1;
		window.localStorage.setItem("count_of_runs",newcountOfRuns );
		alert('Pocetc spusteni ' + window.localStorage.getItem("count_of_runs")  );
	}
	
	if(countOfRuns >= 5)
	{
		
		//alert(countOfRuns);
		alert('Zkusebni verze vyprsela');
		return false;
	}
Chamurappi
Profil
Reaguji na alta64:
coz ji myslim, ze je dano tim, ze hodnota je 1, coz je vj JS i true
Aha, tak obráceně.
Darker
Profil
alt64:
Předpokládám že víš ža každý kdo se v JS aspoň trochu vyzná se takové ochraně vysměje. (nevím jak moc záleží na její neprůchodnosti, jen na to upozorňuji)

Chamurappi:
Dají se tahle uložená data nějak monitorovat?
alt64
Profil *
Je mi jasny, ze to je smesna "ochrana" ale pro ucel na ketry to je neni potreba nic jineho, spis mi nejde do hlavy tohle:

Kdyz spustim aplikaciv klasickem browseru, vse funguje O.K, ale pokud v nativnim prohlizeci Androidu, tak mi prophliec pocita hodnoty uplne divvne, pro prvni iteraci to nahlasi

'Toto je časově omezená verze, aplikaci je možno spustit ještě -52678 krát'

Kod prikladam>

function checkValidity()
{
	
	var maximumOfRuns = 10;
	//window.localStorage. clear();
	var countOfRuns = window.localStorage.getItem("count_of_runs");
	
	if(!countOfRuns)
	{
		//alert('Prvni pristup');
		window.localStorage.setItem("count_of_runs",1);
	}
	
	if(countOfRuns < maximumOfRuns)
	{
		var newcountOfRuns  = parseInt(countOfRuns) + 1;
		window.localStorage.setItem("count_of_runs",newcountOfRuns );
		var left = parseInt (maximumOfRuns) - parseInt(newcountOfRuns) ;
		alert('Toto je časově omezená verze, aplikaci je možno spustit ještě ' + left + ' krát');
		
		//showMessage('Časově omezená verze', "Aplikace je omezena na celkově 5 spuštění", "O.K" );
	}
	
	if(parseInt(countOfRuns) >=  parseInt(maximumOfRuns))
	{
		
		//alert(countOfRuns);
		alert('Zkušební verze vypršela' );
		//showMessage('Zkušební verze vypršela', "Aplikace je omezena na celkově 5 spuštění", "O.K" );
		//REDIRECT PAGE
		$.mobile.changePage("#purchaseAppPage", "slide", false, false); 
		return false;
	}
	
	//+alert(countOfRuns);


	

	
}

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0