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 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.? 1function chat() 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 1function chat() 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: 14 let
|
Toto vlákno je staré, již dlouho do něj nikdo nepřispíval.
Informace a odkazy zde uváděné už nemusejí být aktuální. Nechcete-li řešit zde uvedenou konkrétní otázku, založte si vlastní vlákno, nepište do tohoto. Vložíte-li sem nyní příspěvek, upoutáte pozornost mnoha lidí a někteří z nich si jen kvůli vám přečtou i všechny předcházející příspěvky. Předpokládáte-li, že váš text skutečně bude hodnotný, stiskněte následující tlačítko:
Běda vám, jestli to bude blábol.
0