środa, 22 stycznia 2014

jQuery: jak sprawdzić, czy dokument jest już gotowy

Natrafiłem dziś na mały problem. W aplikacji w jQuery jest pewna funkcja, która po pewnych operacjach zeruje jedno pole. Funkcja ta jest podpięta do eventu onChange pewnego pola w formularzu i jest też wywoływana po załadowaniu formularza z danymi. Problem w tym, że w tym przypadku nie jest porządane, aby czyściła jedno z pól.
Rozwiązanie problemu jest zadziwiająco proste. Po pierwsze w handlerze eventu ready dodałem event listener ustawiający pole:
window.addEventListener('load', function() {
   window.loaded = true;
});

Teoretycznie to powoduje dodanie prostego listenera na końcu kolejki. Oznacza to, że załadowane pliki mają pierwszeństwo. Interesująca mnie funkcja jest wywoływana w listenerze eventu ready na dokumencie w innym pliku, a więc ustawienie tej flagi będzie miało miejsce już po wywołaniu.

W takim razie w funkcji, która mnie interesuje musiałem dodać tylko taki warunek:
if (window.loaded != undefined && window.loaded) {

Całość jest prosta i działa, a to oczywiście najważniejsze.

Brak komentarzy:

Prześlij komentarz