Vini

Statistika

Pridružen/a:
01 sep 2006, 00:34
Zadnjič aktiven:
20 avg 2026, 12:47
Prispevki:
6652 | Vsi prispevki
Teme:
226 | Vse teme
5234
611
56

Podpis

#31

Pri moji širini 1920px je ta zadeva neskončno moteča :)


všeč(0) ni všeč(0) spam(0)
#27

Rahlo offtopic, ampak zakaj moraš na sajtih forsirat velikost browserja čez cel zaslon? :)


všeč(0) ni všeč(0) spam(0)
#18

phpzofa, pohvalno, da ste se potrudili in uredili kodo. Poskusite sedaj še čim bolj ločiti vsebino od prezentacije, pa ne zato, ker je to sedaj IN, ampak zato, ker je tako prav (ker je tako prav, je sicer tudi eden od razlogov, zakaj je to IN :P). Eno od besedil, kjer si lahko prebereš malo več o tem, je na microformats.org (POSH).



Pa ne jemlji tistega šalabajzerja preveč dobesedno :P


všeč(0) ni všeč(0) spam(0)
#5

Ja, saj ravno to sem delal do sedaj, dodal CSS (external file) v HEAD in potem dodal elemente v DOM (znotraj BODY), pa se je dogajalo opisano. Zato sem želel loviti dogodek, ko se CSS naloži in aplicira, da pač toliko časa počakam, preden začnem manipulirati z DOMom.


všeč(0) ni všeč(0) spam(0)
#3

Aha, sem imel prav, zadnja verzija deluje pravilno :) Sem pa še vedno mnenja, da je močno butasta :P


všeč(0) ni všeč(0) spam(0)
#2

Ja, res je, uloviti želim dogodek, ko je CSS že apliciran. Ta tvoja rešitev mi lahko zadeve reši le za določeno situacijo, jaz bi si pa le želel, da zadevo uredim bolj generično.



Očitno bom le moral poiskati nek workaround, problem je sicer sila preprost. Z nekim klicem, lahko bi mu rekli tudi AJAX, v dokument dodam nek CSS in v DOM v BODY appendam kar želim. Ker se CSS še ni naložil, se mi tisti del DOMa, ki sem ga dodal, za trenutek pojavi na dnu strani, seveda nepostajlan, potem pa se pravilno zloži tja, kamor se mora po pravilih iz CSSja. Zadevo sem sicer že rešil blazno elegantno tako, da sem ves dodani DOM wrappal v DIV z izbranim IDjem, recimo "viniwrap", mu določil style="display:none;", na koncu CSSja pa dodal #viniwrap{display:block !important;}. Zadeva seveda deluje lušno, vendar si verjetno že sam ugotovil, kje pa ne, seveda v IE6 :)



Poskusil sem tudi tako, da v DOM pred prej omenjenim DIVom dodam <style type="text/css">#viniwrap{display:none;}</style> in ga na koncu CSSja poskušam overridat z #viniwrap{display:block;}, vendar se zadeva vseeno ne overrida, predvidevam da zato, ker se CSS doda v HEAD, ki pa ga overrida tisti style, ki se je v dokumentu sicer pojavil časovno kasneje, po strukturi pa prej. Ga bom poskusil dodati pred tisti zunanji fajl v HEAD, pa da vidimo :)



Še vedno pa iščem kakšno bolj elegantno rešitev, ta se mi mnogo butasta, tudi če deluje :P


všeč(0) ni všeč(0) spam(0)
#19

Divje, toliko oglasnih blokov kot jih ima vrocasmetana.com, pa tudi pri packu nismo videli :)


všeč(0) ni všeč(0) spam(0)
#

Se je kdo že igral s tem? Načeloma je zadeva besno enostavna, zelo podobno se dinamično vključuje JS in CSS, takole:



CSS: (predvidevamo, da imamo v spremenljivkah file in media o datoteki in media typu)


var head = document.getElementsByTagName('head').item(0);
var css = document.createElement('link');
css.setAttribute('type', 'text/css');
css.setAttribute('rel', 'stylesheet');
css.setAttribute('href', file);
css.setAttribute('media', media);
head.appendChild(css);

JS: (predvidevamo, da imamo v spremenljivki file podatek o datoteki)


var head = document.getElementsByTagName('head').item(0);
script = document.createElement('script');
script.setAttribute('type', 'text/javascript');
script.setAttribute('src', file);
head.appendChild(script);

Do težave pridem, ko želim loviti dogodek, ko se datoteka uspešno naloži, za JS je to enostavno:


var func = function() {
// some code
};
script.onload = func;
script.onreadystatechange = function() {
if (/complete|loaded/.test(script.readyState)) func();
};

script.onload se izvrši v IE, script.onreadystatechange pa v FF (imamo problem, ker se lahko izvrši dvakrat, ampak pustimo to, ne bi dodajal kode, zaradi preglednosti).



Če želim to isto storiti s CSS, se v FF ne zgodi nič, ni nobenega dogodka, niti load, niti readystatechange, v IE se baje izvrši kar oboje :)



Vprašanje je enostavno, se je kdo že ubadal s tem problemom in uspešno rešil detekcijo uspešno dinamično naloženega CSSja? Na webu sem sicer našel "rešitev", ki pa ne deluje, preverjanje document.styleSheets.length, ki se, po mojih opažanjih, poveča takoj, ne pa šele takrat, ko je CSS že naložen, neuporabno skratka.


všeč(0) ni všeč(0) spam(0)
#15

McDave, v bistvu je ravno obratno, rajši narekovaje uporabljaj povsod, pa čeprav v kakšnem primeru to ni potrebno :) Zlahka se ti potem zgodi to, kar se je zgodilu tudi skrbniku tega sajta, recimo:

<LINK href="css/rd2.css" **type=text/css** rel=stylesheet>

<td valign="top" **width=100%**>

kar je pa definitivno invalid.



Vsekakor se strinjam, da je koda obupna, želel sem le poudariti, da ni obupna zaradi tistih zadev, ki jih omenja cyman :)


všeč(0) ni všeč(0) spam(0)
#13

Marek, to, da caps lock pomeni kričanje ni nenapisano pravilo. Je zelo lepo napisano, celo v enem od RFCjev :) Netiquette Guidelines iz oktobra 1995 :)





  • Use mixed case. UPPER CASE LOOKS AS IF YOU'RE SHOUTING.




To pravilo sicer obstaja le za primer, ko komuniciramo z drugimi uporabniki interneta, za HTML nikakor ne drži. Obstaja celo ena konvencija za HTML, ki je tudi omenjena v specifikaciji, in ta je, uporabljaj uppercase za imena tagov in lowercase za imena atributov. Striktno zaradi preglednosti, če se te konvencije ne držiš, koda še vedno ni zaradi tega nepravilna.



Pa še nekaj, Marek, XML ni vedno lowercase, XML je case-sensitive, kar seveda ni isto, lep primer je RSS, ki pozna tage, ki se imenujejo pubDate, lastBuildDate, webMaster, managingEditor, ..., uporablja torej CamelCase, spet zaradi preglednosti. Je pa res, da je XHTML vedno lowercase, pa to ne zaradi tega, ker bi XML standard tako določal, ampak zato, ker so se pač odločili, da bo vse lowercase :)


všeč(0) ni všeč(0) spam(0)