Autor | Zpráva | ||
---|---|---|---|
johnl Profil |
#1 · Zasláno: 18. 11. 2010, 20:19:01 · Upravil/a: johnl
Je normální že když v použiji třeba
setTimeout('ajax();', 9000); //což má každých devět sekund spouštět ajaxovou funkci |
||
Chamurappi Profil |
#2 · Zasláno: 18. 11. 2010, 20:21:06
Reaguji na johnla:
„Je normální […]“ Ne. „Nebo je to chybným kódem..?“ Ano. Nejspíš ten setTimeout voláš víckrát, než si myslíš.
„Jestli to dělají i jiné prohlížeče jsem nezkoušel..“ Tak proč píšeš o Opeře? |
||
johnl Profil |
#3 · Zasláno: 18. 11. 2010, 20:29:20 · Upravil/a: johnl
Chamurappi:
„Tak proč píšeš o Opeře?“ Protože vím, že právě v Opeře mi to blbne a je to hodně znát.. Začne se po chvilce sekat, v chrome jsem to třeba nespozoroval.. Níže je kód který používám na stahování chatu přes ajax, nevěděl by někdo jak to uprait aby to nedělalo.? function chat() { var kam = "chat"; var stranka = "chat.php"; var httpRequest; if(typeof window.ActiveXObject != 'undefined') { httpRequest = new ActiveXObject("Microsoft.XMLHTTP"); } else { httpRequest = new XMLHttpRequest(); } httpRequest.open("GET", stranka, true); httpRequest.onreadystatechange= function () { processRequest(httpRequest, kam) }; httpRequest.send(null); } function processRequest(httpRequest, kam) { if (httpRequest.readyState == 4) { if(httpRequest.status == 200) { if (typeof kam == 'string') { document.getElementById(kam).innerHTML = httpRequest.responseText; setTimeout('chat();', 9000); } } } } |
||
_es Profil |
#4 · Zasláno: 18. 11. 2010, 20:33:05 · Upravil/a: _es
johnl:
„což má každých devět sekund spouštět ajaxovou funkci“ Tento kód spustí funkciu ajax za 9 sekúnd. Ak nastáva nejaké opakovanie, tak to robí okolitý kód.
Ak chceš niečo spúšťať opakovane, môžeš použiť aj metódu setInterval. Ten tvoj kód je navyše nedoporučovaný. |
||
Chamurappi Profil |
#5 · Zasláno: 18. 11. 2010, 20:37:45
Reaguji na johnla:
„nevěděl by někdo jak to uprait aby to nedělalo“ Ten kód je v pořádku. Proč sem dáváš jen malý kousíček kódu a zcela zbytečnou informaci o jednom prohlížeči? „v HTML pak jen volám funkci chat();“ Jen jednou? Na jednom místě? |
||
johnl Profil |
#6 · Zasláno: 18. 11. 2010, 20:45:23
_es:
Ten kód jsem stáhnul z internetu.. S javascriptem moc neumím.. Teď když jsem nahradil setTimeout tím setInterval tak to vypadá že se to nezrychluje.. „Ten tvoj kód je navyše nedoporučovaný.“ Co tím myslíš.? Z toho odkazu jsem moc nepochopil.. :-/ Chamurappi: „Proč sem dáváš jen malý kousíček kódu a zcela zbytečnou informaci o jednom prohlížeči?“ Já bych řekl že je to podstatná část kódu, zbytek už je jen HTML stránka a JS už žádný.. „Jen jednou? Na jednom místě?“ Ano, pod divem do kterého chci aby se to vypsalo.. Jinak nikde.. „zcela zbytečnou informaci o jednom prohlížeči“ Omlouvám se, změním titulek na „zrychlují se setTimeout„ je pravda že to nedělalo jen v Opeře, ale jinde jsem to nezkoušel tak proto jsem to tak napsal.. |
||
Chamurappi Profil |
#7 · Zasláno: 18. 11. 2010, 20:55:38
Reaguji na johnla:
„Já bych řekl že je to podstatná část kódu, zbytek už je jen HTML stránka a JS už žádný..“ Pokud ten uvedený kód vezmu, dám si ho do své stránky a tu pak vyzkouším v Opeře, budu také pozorovat zrychlování? Vsadíme se … třeba o játra, OK? |
||
_es Profil |
#8 · Zasláno: 18. 11. 2010, 20:57:02
johnl:
„Ten kód jsem stáhnul z internetu.. S javascriptem moc neumím..“ „Z toho odkazu jsem moc nepochopil.. :-/“ Tak skús stiahnuť nejaký iný kód, ktorý nebude mať vo volaní setTimeout alebo setInterval textový reťazec, tak, ako to je jednoducho popísané v tom odkaze.
„Teď když jsem nahradil setTimeout tím setInterval tak to vypadá že se to nezrychluje..“ Nahradil akým spôsobom? Dúfam, že nie tak, že si len všetky výskyty setTimeout v kóde zmenil na setInterval ?
|
||
johnl Profil |
#9 · Zasláno: 18. 11. 2010, 20:58:20
Chamurappi:
Já nechci nic tvrdit, JS vážně nerozumím, ale pochybuju že by to způsoboval kód na odeslání který s tím nemá nic společného a nebo kód na vkládání smajlíků do textarey… |
||
johnl Profil |
#10 · Zasláno: 18. 11. 2010, 20:59:11
_es:
„Dúfam, že nie tak, že si len všetky výskyty setTimeout v kóde zmenil na setInterval?“ Nee, z té funkce jsem to vyškrtnul úplně a dal jsem to přímo do stránky.. |
||
Chamurappi Profil |
#11 · Zasláno: 18. 11. 2010, 21:05:18
Reaguji na johnla:
„Já nechci nic tvrdit, JS vážně nerozumím“ Já nerozumím transplantacím, a přesto bych byl schopen vyhrát zánovní játra. Mnohem užitečnější postup, než milionkrát zopakované škemrání o odkaz na živou ukázku. „pochybuju že by to způsoboval kód na odeslání který s tím nemá nic společného“ Nevolá se z něj chat() ?
|
||
johnl Profil |
#12 · Zasláno: 18. 11. 2010, 21:08:33
Chamurappi:
„Nevolá se z něj chat()?“ Právě že ne.. Jak píšu, nahradil jsem ti tím setInterval a jde to bez problému.. |
||
Chamurappi Profil |
#13 · Zasláno: 18. 11. 2010, 21:15:21
Reaguji na johnla:
Ale neznáme příčinu. Prosím o odkaz na živou ukázku. |
||
johnl Profil |
#14 · Zasláno: 18. 11. 2010, 21:25:33
Chamurappi:
Nemám to nikde na internetu, jenom v PC.. Tady je celý soubor chat.js function chat() { var kam = "chat"; var stranka = "chat.php"; var httpRequest; if(typeof window.ActiveXObject != 'undefined') { httpRequest = new ActiveXObject("Microsoft.XMLHTTP"); } else { httpRequest = new XMLHttpRequest(); } httpRequest.open("GET", stranka, true); httpRequest.onreadystatechange= function () { processRequest(httpRequest, kam) }; httpRequest.send(null); } function processRequest(httpRequest, kam) { if (httpRequest.readyState == 4) { if(httpRequest.status == 200) { if (typeof kam == 'string') { document.getElementById(kam).innerHTML = httpRequest.responseText; setTimeout('chat();', 9000); } } } } function poslat(){ var co = document.form.text.value; var co = co.replace("&", "[amp]"); var ajax = (window.XMLHttpRequest ? new XMLHttpRequest() : (window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : false)); if(!ajax){ alert("Tak tady to nepoběží!"); return false; } ajax.onreadystatechange= function () {zpracuj(ajax); } ; ajax.open("GET", "chat.php?text="+co, true); ajax.send(null); return false; } function zpracuj(ajax){ document.form.text.value=""; var txt; if (ajax.readyState == 4){ if(ajax.status == 200 || ajax.status==0){ txt=ajax.responseText; } } } A HTML: <div style="width: 621px; border: 1px solid #222; overflow: hidden;"> <div id="chat" style="width: 610px; margin: 0 auto; padding-top: 5px;"></div> </div> <script src="sc/javascript/chat.js"></script> <script> chat(); </script> takhle to vypadalo než jsem vyškrtl to setTimeout('chat();', 9000); z funkce a v HTML nenahradil chat(); tímto: chat(); setInterval("chat();", 9000); |
||
Chamurappi Profil |
#15 · Zasláno: 18. 11. 2010, 21:34:43
Reaguji na johnla:
Nic mě nenapadá. Jak jsi zjišťoval, že dochází ke zrychlování? |
||
johnl Profil |
#16 · Zasláno: 18. 11. 2010, 21:37:06 · Upravil/a: johnl
Chamurappi:
„Jak jsi zjišťoval, že dochází ke zrychlování?“ Když jsem načtený text označil myší hned při načtení, tak zůstal označený asi těch devět sekund, a tak se to zkracovalo až jsem text označil a během půl sekundy označení zmizelo.. Navíc se Opera začala sekat a měl jsem značně zpomalený internet.. |
||
Časová prodleva: 13 let
|
0