ugrás a tartalomhoz

Alert helyettes program megállító

Velias9 · 2008. Jún. 2. (H), 16.51
Sziasztok!

A gondom az lenne, hogy az itt bemutatott program már működik, de, ha nem rakok be neki egy alert-et a 110 sor után, akkor nem rakja ki az elfedő réteget.
Tehát a kérdés az, hogy van-e olyan parancs, ami megállítja a program futását egy bizonyos időre és semmilyen grafikus vagy egyéb módon nem tudatja a működését, mert az alert felugrálása nem jó.

Előre is köszönök minden segítséget!
 
1

nincs sleep() a js-ben

vbence · 2008. Jún. 2. (H), 17.12
Bevallom, nem olvastam végig az idézett posztot, de a "110. sor" önmagában is elég rémíszően hat. Mival AJAX motorról beszélsz gondolom, a request visszatéréséig szeretnéd "lefagyasztani" a klienst. Ezresetben nem AJAX, hanem SJAX, amit csinálsz :)

Ajánlom még megnézésre ezt a posztot:
http://weblabor.hu/forumok/temak/21335#comment-52849

Amúgy meg, ha leírod, pontosan mire szeretnél várni, talán tudunk válaszolni is...
5

Nem tudom, hogy mi a baj.

Velias9 · 2008. Jún. 3. (K), 15.47
Azt szeretném megvalósíteni, hogy a request elküldése előtt akadjon meg a program futása egy pillanatra (pl.: fél másodperc) aztán fusson tovább arról a sorról, ahol abbahagyta.
Ez azért kell, mert van egy DIV, ami elfedi az oldalt amíg vissza nem tér az eredmény, de ha nem akad meg a program futása egy kicsit (pl.: alerttel), akkor nem történik a DIV-vel semmi.
8

Ne akarj ilyet

zila · 2008. Jún. 3. (K), 16.41
Javascriptet nem tudod megakasztani csak csúnya hack-kel. Ha az aszinkron hívás idejére akarod lefedni az oldalt egy divvel, akkor az xhr előtt tedd ki a divet, majd az xhr callback függvényében szedd le. Ha olyan gyors az xhr, hogy a div éppen csak felvillan, akkor örülj inkább, minthogy szándékosan lassítást építs be...
15

closure

vbence · 2008. Jún. 5. (Cs), 12.13
Csaba általánosabb megoldása helyett had adjak egy földhözragadtabb példát is:
function ajaxKeres(url) {
    // behúzzuk a függönyt az alkalmazás előtt
    document.getElementById("fuggony").display = "block";
    
    // a JS futásának megszakítása, hogy egyes böngészők hajtsák végre a DOM és CSS változásokat
    setTimeout( function () {

        // itt bent látszik minden kinti változó és paraméter is
        tenylegesAjaxKeres(url);

    }, 1);
}
2

én se tudok róla.

solkprog · 2008. Jún. 2. (H), 17.22
Nem tudok ilyenről a js ben, viszont nem nagy kaland írni egyet:

rtime=new Date;
ltime=rtime.getTime()+1000;
function teszt() {
	time=new Date;
	if (time.getTime()<=ltime) {
		teszt();
	}
	
}
teszt();
Viszont nem javaslom hogy használd! Mert nem a problémád oldod meg vele hanem megkerülöd, ráadásul elég ronda módon.
3

nincs ilyen

Fraki · 2008. Jún. 2. (H), 17.54
Erről sokszor esik szó, és nincs ilyen. solkprog megoldását ne használd (bocs, solkprog :)). Olyan stratégiával kell dolgoznod, hogy erre ne legyen szükséged. Használni kell az eseményeket és az időzítéseket.
4

Tegyél be egy kis késleltetést

Jano · 2008. Jún. 2. (H), 19.27
Gondolom az Ajax kérésed olyan gyorsan visszajön, hogy úgy tünik mintha nem is rakná fel. Tegyél be egy idővizsgáltatot, hogy ha mondjuk nem tel még el félmásodperc, akkor állítson be egy időzítőt 1mp-re és hívja az újra a leszedőt.

Megj: nem szerencsés, hogy mindig a $-ral keresteted meg az objektumot, egyszer keresd meg, tedd el változóba és használd azt.
MEgj2: nem szép az összes CSS-t js-ből állítani. Adj a fedődnek id-t, vagy ha több is van akkor osztályt és csak a display-t allitsad, meg a dinamikusan változó dolgokat.
6

Jó lenne ha így lenne, de nem.

Velias9 · 2008. Jún. 3. (K), 15.49
Fentebb már írtam, hogy mit szeretnék megvalósítani, de nem tudom a hibás működés okát.
Egyébként maga a request általában 3-4 mp, tehát nem ez a baj.
7

Még egy lehetőséget látok.

Velias9 · 2008. Jún. 3. (K), 15.55
A setTimeout még lehetne jó megoldás olyan módon, hogy a megállítandó rész utáni sorokat beleveszem. Ez mind szép és jó, de nem tudok paraméterekkel rendelkező függvényeket setTimeoutba rakni, márpedik ott van 2 is.
Tudna nekem valaki segíteni ebben? Hogyan kell ilyen setTimeout-ot írni?

Előre is köszi!
9

Tudsz.

Fraki · 2008. Jún. 3. (K), 18.46
De tudsz.

setTimeout(fv, 1000, param1, param2)
10

izé

toxin · 2008. Jún. 3. (K), 22.37
Note that passing additional parameters to the function in the first syntax does not work in Internet Explorer.
- developer.mozilla.org ,

üdv Csaba
ui.: egyébként és pl. a külső call object-be (lenti példában) így a scope chain-be (magyarul nem tudom :) )bekerülnek a lokális változók, ezért ezek láthatók a setTimeout-on belül is
			(function(){			
				var fooA = 5;				
				setTimeout(function(){
					console.log(fooA);
				},1000);
			})();
kiírja 5
11

sorry

Fraki · 2008. Jún. 4. (Sze), 00.16
sorry
12

paraméterezett setTimeout v1

toxin · 2008. Jún. 4. (Sze), 07.38
jelenlegi szintemen vmi ilyesmit tudok elképzelni :
            function mySetTimeout(callback/*delayed and returned callback function*/){
                return function(params, delay/*any,integer msec*/){
                    setTimeout(function(){
                        callback(params);
                    }, delay);
                };
            };
            
            var myDelayedFunction = mySetTimeout(function(params){
                for (var param in params) 
                    typeof console != 'undefined' ? console.log(params[param]) : alert(params[param]);
            });
			myDelayedFunction({
                a: 'hello',
                b: 'world'
             },1000);
			 
			 myDelayedFunction({
                a: 'hello',
                b: 'world2'
             },5000);
			
kapcsolódó olvasmányok : http://weblabor.hu/cikkek/oojsafelszinalatt, http://ejohn.org/blog/how-javascript-timers-work/

üdv Csaba
13

Asszem...

Velias9 · 2008. Jún. 4. (Sze), 20.39
... nem vagyok biztos benne, hogy tudom, hogy mit csinál ez a script, de azért köszi, majd kipróbálom.

Azonban mi a fene az a console? Ennek nem a FireBug-hoz van köze?
14

példa 2

toxin · 2008. Jún. 5. (Cs), 11.29

           function mySetTimeout(callback/*delayed and returned callback function*/){
                return function(params, delay/*any,number msec*/){
                    setTimeout(function(){
                        callback(params);
                    }, delay);
                };
            };
            
            var akármiFüggvényAmitKéslelteveÉsParaméterezveAkarokMeghívni = mySetTimeout(function(params){
                alert('helló ' + params);
            });
            
            akármiFüggvényAmitKéslelteveÉsParaméterezveAkarokMeghívni('Sajókám',1000);
            akármiFüggvényAmitKéslelteveÉsParaméterezveAkarokMeghívni('Pistikém',3000);
            akármiFüggvényAmitKéslelteveÉsParaméterezveAkarokMeghívni('Bélám',5000);
megnézem futva is

Azonban mi a fene az a console? Ennek nem a FireBug-hoz van köze?

az csak a példa volt

üdv Csaba
16

Értem.

Velias9 · 2008. Jún. 5. (Cs), 14.16
Köszönöm a segítséget mindenkinek!