Przed snem się Wam wyżalę apropo moich dzisiejszych doświadczeń ze zdarzeniem onResize ;) (jakby ktoś nie wiedział to zdarzenie to występuje przy zmianie wielkości elementu ;) ).
Jakoś tak początkowo odczuwałem potrzebę wykorzystania tego zdarzenia w jednym ze skryptów (żeby nie kombinować z różnymi CSS dla różnych przeglądarek), ale szybko mi się ten pomysł odwidział. Dlaczego ? Zawiodłem się na IE (w sumie to nic dziwnego), ale o dziwo Opera też nie pokazała się z najlepszej strony O_o Oczywiście może to ja mam jakiś problem ze swoją wizją działania zdarzenia onResize - według mnie powinno ono wystąpić wtedy gdy użytkownik zmieni rozmiar elementu (w moim wypadku okna) i puści przycisk myszki. No i tak jest... ale tylko w Firefoksie ;) Opera generuje to zdarzenie także podczas zmieniania rozmiaru okna ( to znaczy wtedy gdy użytkownik jeszcze nie puści przycisku myszki ) i jest wtedy tych zdarzeń automatycznie wielokrotnie więcej... Natomiast IE... no tu muszę przyznać, że poczułem się rozbity inwencją twórczą programistów z Redmond - kliknięcie przycisku maksymalizującego okno (przy przywracaniu okna to samo) generuje uwaga.... 3 (słownie: trzy) zdarzenia onResize... Gromkie brawa dla tych panów... Żeby było jeszcze ciekawiej to ponoć IE udostępnia zdarzenie onResizeEnd (i onResizeStart też ponoć), ale jakoś nie udało mi się wywołać tego zdarzenia... Gdzieś nawet wyczytałem, że element, któremu chcemy przypisać to zdarzenie musi mieć właściwość contentEditable ustawioną na true, ale u mnie nic to nie zmieniło poza tym, że zrobiłem sobie notatnik z IE ;)
Przygotowałem prosty przykład, który odpalony pod różnymi przeglądarkami da Wam odpowiedź na to ile razy występuje zdarzenie onResize podczas zmian rozmiaru okna : PRZYKŁAD ;)
Jakby ktoś jeszcze po obadaniu tego przykładu nie rozumiał sensu tytułu to powiem tak - co by było gdyby zdarzeniu onResize przypisać jakąś bardziej skomplikowaną funkcję ? Parę zmian rozmiaru okna w IE i zwis gwarantowany (mi się zwiesił raz nawet na przykładzie który podałem, także wiecie... :D ).
Jak widać lepiej się pomęczyć i zrobić ile wlezie za pomocą CSS niż katować komputer użytkownika setkami zdarzeń onResize (parę zmian rozmiaru okna w IE i już 500 zdarzeń onResize wykonanych)... Czytałem co prawda, że można pokombinować z określeniem co ile może się wykonać to zdarzenie (Date,getTime i sprawdzanie czy jakiś określony czas wcześniej zdarzenie już nie miało miejsca), ale mi się udało co najwyżej ograniczyć ilość zdarzeń w Operze i sprawić, że w IE zdarzenie onResize występowało przy pierwszym przesunięciu kursora zaraz po wciśnięciu przycisku myszki ;) Generalnie nie wiem jak to się stało (bo z założenia miało to działać inaczej) ale efekt ciekawy ;] W każdym razie lepiej unikać tego eventu ;)
P.S.: Oczywiście, jeśli ktoś ma inne oczekiwania wobec onResize i chce by zdarzenie to występowało często to będzie narzekał na Firefoxa... W sumie to Opera ma chyba optymalne rozwiązanie, ale co z tego skoro każda przeglądarka interpretuje ten event inaczej ?