[JS] Przeładowanie strony po załadowaniu wszystkich ramek

HTML to podstawy w dziedzinie tworzenia stron WWW, Style CSS warto opanować, bowiem za ich pomocą można dostosować odpowiednio wygląd swojej witryny WWW. Zagłębiamy się dalej i udostępniamy w tym forum możliwość zadawania pytań o JavaScript.
ODPOWIEDZ
zsedc
Posty: 19
Rejestracja: pt lis 18, 2005 1:51 pm
Kontakt:

[JS] Przeładowanie strony po załadowaniu wszystkich ramek

Post autor: zsedc »

Hej..
mam na jednej stronie kilkadziesiąt pływających ramek chciałbym aby dopiero po załadowaniu się wszystkich ramek całość się odświeżyła i załadowało wszystko na nowo..

mam tak

Kod: Zaznacz cały

<meta http-equiv="Refresh" content='49; URL=index.php?id=<? echo $kolejne;?>' />
ale te 49 sekund jest od momentu zaladowania sie strony glownej a nie stron znajdujacych sie w ramkach..

da sie jakos to rozwiazac aby reload nastepowal po zaladowaniu ramek?

Pozdrawiam
Paweł

1. Do prezentacji fragmentu kodu korzystaj z odpowiedniego BBCode [poprawione]
2. W temacie, korzystając z tagów, podawaj język, do którego tyczy się topic [poprawione]
atom
Nowy
Nowy
Posty: 145
Rejestracja: wt gru 20, 2005 1:55 pm
Kontakt:

Re: [JS] Przeładowanie strony po załadowaniu wszystkich ramek

Post autor: atom »

Pomysł ogólny jest taki: masz stronę głowną (index.html) w której jest frameset i kilka stronek (n1.html, n2.html, ...) ładowanych do poszczególnych framek. W każdej ze stronek nX.html umieszczasz kod JS z funkcją, np.

Kod: Zaznacz cały

function iAmReady() {
    return true;
}
Funkcja ta powinna sprawdzać czy cała strona jest załadowna i zwracać true, jeśli tak. W ogólności wystarczy chyba że umieścimy ją na końcu strony i zawsze zwrócimy true.

Na stronie gółwnej piszesz metodę w stylu:

Kod: Zaznacz cały

function checkFrames() {
    for (var i=0; i<window.frames.length; i++) {
        var frm = window.frames[i];
        try {
            if (!frm.iAmReady()) return false;
        }
        catch (e) {
            return false;
        }
    }
    return true;
}
Ta metoda zwraca true jesli wszystkie framki są załadowane. Wystarczy teraz sprawdzać co jakiś czas jaki wynik zwróciła metoda (patrz. setInterval albo setTimeout) i jeśli wynik będzie true, można przeładować stroną głowną.

Nie testowałem tego, ale taka jest moja koncepcja, tak ja to widze... ;)
ODPOWIEDZ