Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JS] Odswiezanie zawartosci (nie strony) w FF
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
Luciano
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?
zbig
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 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
Luciano
Bez obaw, doskonale wiem jak dziala AJAX. Wyraznie napisalem ze w IE dziala tlyko w FF nie dziala. AJAX jest tylko w kontekscie mojej aplikacji i sam w sobie nie ma tu nic do rzeczy.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.