Apeluri Ajax lungi in IE si mesaje de … loading …
Recent am avut o problema cu un client care avea o baza de date foarte mare iar functionalitatea care aducea o lista de elemente dura mai mult de 5-10 secunde. In mod normal, se pune un mesaj de “stati pe loc, ca lucrez”, “loading” ceva…
Partea proasta la IE este ca de exemplu pui un DIV frumos si colorat sa se afiseze, va sta ca boul sa se termine requestul Ajax, moment in care nu ma mai intereseaza, pentru ca eu deja vreau sa il ascund.
O solutie temporara, in lipsa de altceva mai bun, este sa pornesti requestul intr-o functie setTimeout() ca sa dai timp la IE sa isi afiseze DIVul, mesajul, etc si peste 500 de milisecunde sa dai drumul la request. Ceva de genul:
waitPlease(‘Loading stuff…’);
setTimeout(“executeStuffSearch()”, 500);
Evident, ca daca in divul respectiv e o imagine cu gif animat (o rotita de exemplu) aia va sta inghetata tot timpul cit IE asteapta sa-i vina raspunsul la request. Btw, mentionez ca requestul este sincron…
Alte idei?
Pai sunt mai multe variante dar cea mai buna este asa:
a) pentru afisarea mesajelor de please wait uita-te dupa blockUI (http://malsup.com/jquery/block/).
b) in al doilea rand, jucatia de Ajax de la microsoft are 2 evenimente super meseriase care sunt utile exact in cazul asta al tau:
Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(
function(sender, args) { … show please wait… });
si
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(
function(sender, args) { .. hide please wait.. });
merge de n-are aere…
Problema e ca nu mai vreau sa adaug alte framework-uri doar pentru un mesaj de wait. Care doar la IE imi da dureri de cap…