ugrás a tartalomhoz

window.onLoad előtt megváltoztatni egy elem stílusát

Max Logan · 2007. Már. 28. (Sze), 17.03
Szóval a probléma rövid: adott két DIV, amik alapesetben látszanak és egy ami nem látszik. Ha a kedves user bekapcsolt JS-sel jön az oldalra, akkor a két DIV-et elrejti, ami pedig nem látszódott azt megjeleníti egy függvény.

Az elrejtéssel az a problémám, hogy bevillan egy pillanatra a két DIV, mielőtt eltűnnének. Először a Weblabor-on használt addEvent függvénnyel hozzáadtam egy onload esetményt, ami szépen megcsinálta az eltüntetést. Ezzel a baj az, hogy bár kicsi az oldal amin mahinál látható a villanás, mert ugye csak onLoad után hajtja végre a feladatát.

Ekkor kerestem rá az onDOMload-ra és konstatáltam, hogy valójában ilyen függvény nem létezik (Egy Weblabor-os topicban egyértelmű utalás erre nem történt és már kezdtem hülyének érezni magam, hogy nem találok hivatalos doksit az eseménykezelőről). Leszedtem kipróbáltam és működött is FF és Opera alatt. Aztán jött az IE ami az előzőleg már leírt bevillanást produkálta. Bár néha FF és Opera is csinálta. Tehát ez onDOMload sem segít a problémán.

Alap feltevés az volt, hogy no gond, mert egy script fogja magát és beszúr egy olyan CSS-t amiben felül van bírálva a 3 DIV stílusa. Ezzel egy baj van, hogy a nem HEAD részben megadott STYLE elem nem valid megoldás.

Ekkor jött az ötlet, hogy DOM függvényeket használva majd beoperálok egy <link> elemet a HEAD-be. Ezzel a baj az, hogy szintén csak az oldal betöltése után illeszti be a CSS-t, ami még a legelső addEvent-es megoldásnál is rondább eredményt ad.

A megoldás végül az lett, hogy egy document.write-tal az alap CSS után beillesztek egy "felölbíráló" CSS-t. Ez műxik is szépen.

A kérdésem annyi lenne, hogy a document.write-os dolognál van-e szebb / jobb megoldás?

A működő oldal itt tekinthető meg.
 
1

noscript

Jano · 2007. Már. 28. (Sze), 17.37
Ha a javascript támogatottságtól függ az elemek megjelenítése akkor a noscript-tagbe rakott css LINK elem nem megoldás?
2

Nem valid

Max Logan · 2007. Már. 28. (Sze), 17.44
A BODY-n belül sem a LINK sem a STYLE nem valid. A HEAD-ben pedig a NOSCRIPT nem valid (OBJECT-be rakva már igen, de akkor meg a LINK nem valid)...
3

Akkor rakd az elrejtendőket noscriptbe

Jano · 2007. Már. 28. (Sze), 18.05
Akkor rakd az elrejtendőket noscriptbe.
5

Na igen

Max Logan · 2007. Már. 28. (Sze), 18.16
Ezzel is próbálkoztam, csak akkor meg duplikálni kellene a két DIV-et (1x a noscript-ben és azon kívül display: none;-nal), mert ugye a JS nem fér hozzá a NOSCRIPT közötti tartalomhoz. (a getElementById hibát ad, hogy olyan elem már pedig nincs)
6

Azt nem mondtad, hogy elő is kell hozni

Jano · 2007. Már. 28. (Sze), 18.21
Azt nem mondtad, hogy utána valamit csinálni is akarsz az elrejtett DIV-ekkel, csak azt, hogy ne jelenjen meg ha van script.
7

Ott a működő oldal

Max Logan · 2007. Már. 28. (Sze), 18.23
Azért linkeltem be a működő oldalt, hogy meg tudjátok nézni munka közben ...
4

ondomload → DOMContentLoaded

attlad · 2007. Már. 28. (Sze), 18.13
Az ondomload kérdésre válasz.

Kiegészítés:
Én ezeket nézném meg: