![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 102 Pomógł: 1 Dołączył: 26.07.2006 Skąd: Londyn Ostrzeżenie: (0%) ![]() ![]() |
Witam wszystkich!
Zauwazylem dziwne zachowanie FireFoxa, ktore nie bardzo wiem jak obejsc. Na stronie mam pewien dynamiczny element, ktory wysyla i pobiera dane za pomoca AJAXa (AJAXu? ;> ). Wszystko bylo dobrze do puki nie stwierdzilem, ze nieco glupio dawac userowi dostep do tego dynamicznego elementu podczasz trwania wywolania AJAX. Najprosciej wiec do czasu otrzymania odpowiedzi z servera zaslonic dynamiczny element pol przezroczysta warstwa. Tak wiec zrobilem. W IE dziala to jak powinno natomiast w FF nic sie nie dzieje w sensie nie widac tej warstwy. Wyglada to mniej wiecej tak. funkcja ktorawolaAJAX(){ wyswietl_zaslone(); funcja odpowiedzajaxu(){ schowaj_zaslone(); } wywolaj_ajax(); } Okazalo sie, ze jesli bede prubowal zrobic cokolwiek w tej funkcji nie tylko wyswietlac swoja zaslonke ale nawet proste operacje jak np. zmiana koloru tla itd wciaz nie beda one widoczne w FireFoxie. Ciekawostka jest ze jesli np. w polowie tej funkcji wstawie alerta zobacze swoja zaslonke czy jakie kolwiek inne zmiany elementu strony. Mam przeczucie ze jesli w jednej funkcji zarzadam zmian na stronie FireFox odklada je na pozniej (az do wyjscia z funkcji) jedynie mozna go wyrwac z marazmu alertem. Jesli wiec tak jak tutaj w jednej funkcji cos przyslaniam a pozniej odslaniam z poziomu tej samej funkcji efekt jest taki ze FF udaje jakby nic sie nie stalo. Prubowalem to obejsc na rozne sposoby, wywolywac funkcje z timeoutem itd wciaz dupa. Czy mozna jakos zmusic FF do odswiezenia plutna? czy moze takie rzeczy robi sie w inny sposob? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 144 Pomógł: 30 Dołączył: 5.05.2007 Skąd: Mannheim Ostrzeżenie: (0%) ![]() ![]() |
Nie bardzo rozumiem jak ma dzialac twoja funkcja, ale przede wszystkim pamietaj ze ajax dziala asynchronicznie i wywolywanie funkcji po uruchomieniu ajaxa nie daje ci absolutnie pewnosci ze poczeka on na opdowiedz z serwera. Najprawdopodobniej startujesz swoja zaslone uruchamiasz ajaxa i usuwasz zaslone majac nadzieje ze usuwanie zaslony bedzie czekac (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) .
Przykladowy kod ktory powinien poradzic sobie z tym problemikiem : Kod new Ajax.Request(url, { method: 'get', onLoading: function() { tutaj_zaslaniasz(); } onSuccess: function(transport) { tutaj_odslaniasz(); } }); To akurat prototype ale zasada jest zawsze taka sama |
|
|
![]() ![]() |
![]() |
Aktualny czas: 3.10.2025 - 00:30 |