Hahaha, Cristi nu m-ar mira sa ai dreptate, cu noua versiune de IE. Problema vine, dupa cum banuiesc, de la cum face Firefoxul multithreading(mai bine zis sincronizarea intre threaduri) cand incarca un document:
- pentru fiecare(ma rog nu chiar fiecare, exista o limita) element(imagine/stil etc) din pagina ce trebuie incarcata se deschide un thread nou
- threadul principal e cel care incarca documentul propriu zis, si nu asteapta ca celelalte threaduri sa termina ca sa randeze pagina(de ex: de-aia cand incarci o pagina cu adsense pe ea, mai intai apare pagina fara reclama).
Totul normal pana aici, asa functioneaza orice browser modern, insa atunci cand incarc un document folosind XMLHttpRequest, e de dorit uneori(chiar foarte dorit, ultradorit) ca putza de thread principal sa astepte sa termine threadul ce incarca documentul respectiv.
E, IE face sincronizarea aparent bine intre threaduri(imi retrag cuvantul brici din postul de mai sus ca nu am testat cu sa zicem 10-20 threaduri dastea imbricate si tare imi e ca o sa fie probleme) dar beleaua e ca in Firefox degeaba setez eu sa incarce sincron documentul respectiv ca threadul principal isi continua executia binemersi. Cum astia au gandit javascriptul cum au gandit romanii dacia: la ce dreaq ii trebe functia pause, prea greu de implementat, trebuie sa cutting-costs asa ca o vom pune pe lista de todo peste 38765837 ani, nu exista un hack rapid(sa pui un pause dupa ce ai apelat connectul la obiectul XMLHttprequest si gata) Ceea ce inseamna ca v-a trebui sa pun o bucla stupida de genul:
Cod:
while (!loaded) {
loaded = conexiune.checkIfLoaded()
}
Edit: merge fix o pewla asa. se executa mult pra repede indiferent cat de complexa fac functia checkIfLoaded(multe ifuri adunar scaderi, operatzii pe bit instantieri de obiecte etc);
Problema e ca astfel utilizarea procesorului ajunge la 100%(bucla se execute de foarte foarte multe ori);
In fine, momentan alta solutie nu vad.
Am prezentat mai pe larg problemele cu care ma confrunt, ca sa fiti pregatiti daca vreti sa construiti aplicatii bazate pe AJAX. Asteptati-va la probleme si la mult timp pierdut cautand solutzii pentru prostiile altora. Comparativ cu web designul, timpul pierdut cautand sa faci un layout crossbrowser este mult mai mic.
In concluzie, desi se vorbeste si se lauda in sus si in jos AJAXul, WEB2.0 e inca departe