Autor Zpráva
Cody
Profil
Kód počítdel zparvidla (cnw, Pocitadlo.cz aj.) jsou silně nevalidní. Jde to nějak aspoň obejít? Třeba to napsat JavaScriptem či přes fci include?
Vím, že nejlepší je napsat si počítadlo sám:-)
Anonymní
Profil *
Docela často jde o detaily, třeba chybějící uvozovky u rozměrů obrázku nebo neošetřené ampersandy. V některých případech lze vygenerované kódy upravit tak, že validují, a funkčnost se tím neohrozí.

Třeba kódy od TopListu a CNW se mi povedlo zmasakrovat tak, že nekladou odpor při XHTML 1.0 :-)
Anonymní
Profil *
sorry, XHTML 1.0 Strict...
Cody
Profil
Jo moc díky, můžu se zeptat jak? Já se skriptama moc nedělám, takže jim moc ani nerozumím:-(
Yuhů
Profil
myslím, že sem stačí nakopírovat příklad toho nevalidního kódu a nějaký dobrovolník ho jistě převede
Anonymní
Profil *
Tak jo, já to zkusím, díky moc. Používám hlavně Počítadlo, takže:
<!-- Počítadlo.cz počítadlo:17759 uživatel:13236 -->
<script language="JavaScript" type="text/javascript">
<!--
Tmp=Math.floor(1000000 * Math.random());
document.write("<scr" + "ipt src=\"http://cnt1.pocitadlo.cz/counter.php?poc=17759&ref="+escape(top. document.referrer)+"&depth="+screen.colorDepth+"&width="+screen.width+ "&height="+screen.height+"&tmp="+Tmp+"\" language=\"JavaScript\" type=\"text/javascript\"></scr" + "ipt>");
// -->
</script>
<noscript>
<img src="http://cnt1.pocitadlo.cz/counter.php?poc=17759&ns=1" width="1" height="1" alt="" border="0"/>
</noscript>
<!-- Počítadlo.cz konec -->
Yuhů
Profil
Zkus tohle. Ohledně noscript si nejsem jistý, ale v zásadě stačí označit vnitřek skriptu jako CDATA a dobře to zapoznámkovat:


<!-- Počítadlo.cz počítadlo:17759 uživatel:13236 -->
<script type="text/javascript">
/* <![CDATA[ */
Tmp=Math.floor(1000000 * Math.random());
document.write("<scr" + "ipt src=\"http://cnt1.pocitadlo.cz/counter.php?poc=17759&ref="+escape(top. document.referrer)+"&depth="+screen.colorDepth+"&width="+screen.width+ "&height="+screen.height+"&tmp="+Tmp+"\" language=\"JavaScript\" type=\"text/javascript\"></scr" + "ipt>");
/* ]]> */
</script>
<noscript>
<img src="http://cnt1.pocitadlo.cz/counter.php?poc=17759&amp;ns=1" width="1" height="1" alt="" border="0" />
</noscript>
<!-- Počítadlo.cz konec -->

Ještě bacha, v původním skriptu je chybně mezera mezi top. a document.referrer.
Cody
Profil
Mockrá díky Yuhů, věděl jsem, že se na tuhle diskusi spolehnout, bodejť by ne, dyť je spoučástí nejlepších českých stránek o webu:-)))
Cyz
Profil *
document.write není v XHTML 1.0 strict a XHTML 1.1 validní (používání JS v XHTML je dost omezené) proto doporučuji pro stránky s JS HTML 4.01)
Yuhů
Profil
to Cyz: můžeš mi prosím poradit, kde najdu konkrétní informace o validitě a nevaliditě javascriptu v XHTML? Myslel jsem si, že když něco uzavřu do CDATA, tak že vnitřek není validátorem posuzován. Pletu se?
Fred
Profil
To Yuhů:
1/W3C validátoru to sice nevadí, ale třeba CSE Pro vypíše na cdata chybu ve zpětné kompaktibilitě
In XHTML documents, style and script content should not be in a comment because it technically means that the browser will see it as a comment and not as actual style or script content (though browsers are currently forgiving about this). However, not using comments makes your document less compatible with pre HTML 3.2 browsers (but most browsers in use now are HTML 3.2+ compatible). For maximum compatibility, AI Internet Solutions recommends putting the script (especially longer scripts) in an external file and using the "src" attribute to specify the external file. The next best option for XHTML documents would be to not put the script content in a comment and to disregard pre HTML 3.2 browsers.
2/proč neníé správně document.write : http://ln.hixie.ch/?start=1091626816&count=1


To Cody: K původnímu dotazu, Nípal : http://nipal.wz.cz/ (děkuju) mi někde v diskusi na webzdarma poradil skvělý způsob, jak tyhle věci vyřešit pomocí php. Mrkni se ke mně do zdrojáku http://abrakadabra.nazory.cz , v komentářích je tam zdrojový kód tohohle php vkládání , z toho by ty počítadla šly taky určitě udělat.
Fred
Profil
Tak jsem si s tím pohrál bez php, udělal bych to takhle
do hlavičky normálně přilinkovat js:
<script type="text/javascript" src="pocitadlo.js"></script>

obsah souboru pocitadlo.js:
function pocitadlo() {
var Tmp=Math.floor(1000000 * Math.random());
var cntlink = document.createElement('script');
cntlink.setAttribute('src','http://cnt1.pocitadlo.cz/counter.php?poc=1 7759&amp;ref="+escape(top. document.referrer)+"&amp;depth="+screen.colorDepth+"&amp;width="+scree n.width+ "&amp;height="+screen.height+"&amp;tmp="+Tmp+"');
cntlink.setAttribute('type','text/javascript');
document.getElementsByTagName('head').item(0).appendChild(cntlink);
}
function ie4problem(){
return true;
}
window.onerror=ie4problem;
window.onload=pocitadlo;
do body noscript:
<noscript>
<img src="http://cnt1.pocitadlo.cz/counter.php?poc=17759&amp;ns=1" width="1" height="1" alt="počítadlo" class="bez_borderu" />
</noscript>
Inspirace tady : http://www.paranoidfish.org/boxes/2002/01/14/script.js , http://www.paranoidfish.org/boxes/2002/01/14/
Tady je to ke stažení http://xy.wz.cz/cestina/pocitadlo.html , přepiš si 38501 v img i ve scriptu na svoje id(17759) , počítá to v pohodě a je to validní , nebude to započítávat IE4, nebo jiné velmi staré prohlížeče .
Funguje v Opeře, FF, Mozille, K-meleonu, IE5+ win
tady je link na statistiky pro kontrolu funkčnosti scriptu http://cnt1.pocitadlo.cz/stat-celkem.php?id=38501
Fred
Profil
Update od: var cntlink až po středník by to mělo být na jednom řádku
a img v noscript by měl být v nějakém blokovém elementu, třeba p
Yuhů
Profil
Frede, vůbec ti nerozumím.

1/W3C validátoru to sice nevadí, ale třeba CSE Pro vypíše na cdata chybu ve zpětné kompaktibilitě
In XHTML documents, style and script content should not be in a comment


to ale přece s tématem vůbec nesouvisí. CDATA je v tomto případě zapoznámkováno javascriptovou poznámkou, nikoli html poznámkou.

2/proč neníé správně document.write : http ://ln.hixie.ch/?start=1091626816&count=1

Tak tohle je totální ústřel. Týká se to XML, nikoliv XHTML. S validitou to nesouvisí vůbec, pouze se projednává nefunkčnost v případě, že je dokument vykreslován pomocí XML parseru (což dnes IMHO nedělá žádný běžný prohlížeč a žádný si v dohledné době nebude moci na tom chybovat).


Jinak přepsat ten soubor do externího je samozřejmě správná myšlenka. A bez document.write to samozřejmě také jde (tomuhle příkazu se už pár let snažím vyhnout, ale s validitou to nesouvisí).
Fred
Profil
Cdata či document.write v kódu např. shodí konkrétně Amayu, i když tu shodí i podmíněný komentář pro IE. Zvykl jsem si jí používat, i přes její nedokonalost, protože to co jede v Amaye jede všude
Ten odkaz na hixieho blog je přeci o xhtml ?
Neříkám, že tomu rozumím, ale
trochu mě to potom mate tohle: http://interforum.interval.cz/ShowPost.aspx?PostID=8606
http://www.xml.com/lpt/a/2003/03/19/dive-into-xml.html
Cody
Profil
Zdar tak jsem testoval to počítadlo a výsledek je tenhle.
Yuhů
Profil
Cody, vysvětli mi prosím, proč chceš napsat XHTML kód počítadla, když stránku provozuješ v HTML?
curo
Profil
Ja mam podobny problem s vkladanim kodu vygenerovanym reklamnym systemom newLinx. Oni pouzivaju element iframe s nastavenymi vlastnostami width, height, ... . A to podla xhtml 1.0 trans nie je validne. Nemate niekto recept aj na toto? Dakujem
Roman
Profil *
K těm počitadlům. U Toplistu je to docela jednoduché. Tam to dělá blbý ahref. Stačí odkaz k toplistu rozdělit na dva. První ukončit před nonscriptem a druhý zanořit do nonscriptu a je to validní. Je to obdobné, jako když H1 zanoříte do odkazu a ne naopak.
Yuhů
Profil
curo, zkus to stylem.

<iframe style="width: 468px; height: 60px;"....></iframe>

ale nevím, jestli to bude validní. Jsem línej hledat DTD.
Cody
Profil
Ups, sekl jsem se asi v názvi diskuse, ted když to čtu tak to nechápu:-( Původně to mělo být do HTML, všem přítomným se moc omlouvám, chyba je na mé straně:-(
curo
Profil
to yuhú: fičí to aj štýlom, len sa mi nepodarilo zistiť ako pomocou štýlov vypnem scroll bary pri iframe.
Yuhů
Profil
scrollbary pri iframe sa vypínajú vo vnútornom rámu zápisom
body {overflow: hidden;}

alebo z nadrazeného rámu, ale to už sa nerobí ve styloch, ale v html:
<iframe scrolling="no" ...
a to sa mi páči viacej
Radek Hulán
Profil *
document.write() se hlavně u XHTML, pokud je posíláno s MIME typem application/xhtml+xml vůbec neprovede... ;-)
Toto téma je uzamčeno. Odpověď nelze zaslat.