ė propaganda!

Rimas Kudelis offsight ;)

2007-01-22

<body onload="funkcija()"> minusas

Filed under: www — RQ @ 17:29

Šiandien susidūriau su vienu <body onload="funkcija()"> trūkumu, nusprendžiau apie jį papasakoti.

Tarkime, turime tinklalapį, kuris užsikrovęs turėtų įvykdyti tam tikrą Javascript kodą, kažką pakeičiantį/pridedantį tam tikroje tinklalapio vietoje. Jei tai bus bandoma daryti anksčiau, negu minėtoji vieta užsikraus, operacija nenusiseks, todėl tipiniu atveju mes pirma užkrauname tinklalapio body, o tada jau su juo žaidžiame. Visa tai realizuojama, pridedant onload="funkcija()" atributą body žymai.

Bet štai ir susiduriame su netikėtumais. Tarkime, svetainė užkrauna skaitliuką iš vieno ar kelių kitų serverių. Tam, kad lankytojui pirmiau parodyti svetainės turinį, o tik tada rūpintis statistikų generavimu, mes tuos JS failus iškviečiame body pabaigoje, o ne head dalyje. Taigi, viskas veikia puikiai, kol vienas iš tų kitų serverių nenumiršta. :) O kai taip įvyksta, body nėra laikomas loaded, kol neišsibaigia laikas, skirtas bandymui parsisiųsti to skaitliuko JS’ą. Taigi, gaunasi truputėlį nekas — mūsų funkcija inicijuojasi, vėluodama gerą minutę, o gal net daugiau… Beje, šiuo atveju JS įtraukimas į head dalį, spėju, tik dar apsunkintų situaciją — tą minutę vėluotų ne tik mūsų funkcija, bet ir visas svetainės turinys.

Todėl nuo šiol manau, jog labai dažnai vietoje onload geriau naudoti paprastą script, iškviečiamą prieš pat iškviečiant skaitliukus, o gal net ir dar anksčiau. Bent jau tais atvejais, kai kažkokį turinį krauname iš išorinių serverių…

Komentarų: 5 »

  1. Pawka turi gravatarą

    Nuspėjau įrašo pabaigą. Tiksliau norėjau tą patį pasiūlyti. Kaiptik labai neseniai priėjau lygiai tokių pačių išvadų. :-)

    Komentaras by Pawka — 2007-01-22 @ 17:48

  2. Archatas turi gravatarą

    Na aš vis vien už onload variantą, tik ne bodžiui, o windowsui:

    O js.js:
    function do_it() {
    //…
    }

    window.onload = do_it;

    Visi kiti variantai labai nešvarūs.

    Komentaras by Archatas — 2007-01-22 @ 20:07

  3. RQ turi gravatarą

    window.onload irgi užteršia kodą. :) Plius, lauktum minutę, kol išsibaigtų laikas, skirtas ryšiui su statistikų serveriu užmegzti.

    Komentaras by RQ — 2007-01-22 @ 20:10

  4. nkts turi gravatarą

    O gal geriausia skaitliukus pasigamint patiems ir laikyt savo serveryje/hostinge (liet. priegloboje)?

    Komentaras by nkts — 2007-01-29 @ 20:50

  5. Tadas Kvedaras turi gravatarą

    Serveris irgi lužta, irgi apsikrauna load’ais, todėl visus script ir rekomenduoju dėt tik pačiame gale, prieš </body>.

    Nesuprantu tik vieno – kodėl google savo google analytic rekomenduoja dėti iškart po <body>, juk skaitliukas nėra pati svarbiausia informacija, kurią užkrauti būtina pirmiau nei tinklapį – aš jau nekalbu apie tai, kad google analytic gan gerokai stabdo.

    Komentaras by Tadas Kvedaras — 2007-01-30 @ 23:06

Šio įrašo komentarų RSS srautas. TrackBack URI

Parašykite komentarą

Copyleft Rimas „RQ“ Kudelis :: Aš naudoju „WordPress“ :: Dar naudoju IE7 :: Dar pasinaudojau CSG :: Spam policy