Autor Zpráva
vydrus
Profil
Volám velkého, moudrého Chamurappiho!

Mám problém. Má stránka je nevalidní. Jak to spravit? Zkoušel jsem všechno možné, a nic.

Díky...

///edit - již neaktuální, stránka proběhla množstvím změn - teď mi jde jen o ten JS, který jsem popsal dole
Venca V
Profil
Stačí se trochu zamyslet a nemusíš volat nikoho, odpověď ti nabízí validátor na tebou uvedeném odkazu:

Konsorcium si myslí, že je element <noscript> blokový (což v praxi neplatí) a validátoru se tudíž nelíbí, že jej dáváte do řádkového.


Místo <small> si odpovídajícím způsobem nastyluj <div>.

edit: překlep
Miloš
Profil
Jestliže se spokojíš s malým hloupým Milošem, pak:
<noscript> je blok a jako takový nemá co dělat v řádkovém <small>.
Krom toho ti (jsme v HTML) blokový <noscript> uzavře předchozí <p class="postmetadata alt">, v čehož důsledku tam ukončovací </p> nemá co ukončovat.

Řešení je na bíle dni:
<p class="postmetadata alt"><small>Tento článek byl vložen…
   nebo <script type="text/javascript">obsah = '<a target="_blank"…
  </script></small>
</p>
<noscript> sledovat další články pomocí <a href="http://vydrus.ic.cz/?feed=rss">RSS</a>.</noscript>

Případně můžeš poslední řádek doplnit takhle:
<noscript><p>sledovat další články pomocí <a href="http://vydrus.ic.cz/?feed=rss">RSS</a>.</p></noscript>
Miloš
Profil
Venca V
Nepředbíhej, jóóóóó!
vydrus
Profil
Miloš
Jenže, je tu menší problém. Já to potřebuji na stejném řádku, takže <p> za noscriptem nepřichází v úvahu. Teď jsem to tam nějak zaonačil (validní), ale zas to blbne s tim řádkem.
Miloš
Profil
vydrus
<p> za noscriptem nepřichází v úvahu
Vždyť tam ten <p> být vůbec nemusí (viz první příklad)
vydrus
Profil
Miloš
Možná. Jenže, co když si vypnu JS? Tak to poskočí o řádek níž...
habendorf
Profil
vydrus

Ono se to takhle především vůbec nedělá. Ten způsob zápisu skriptu jsi asi odkoukal z PHP, ale JS je něco krapet jiného.
vydrus
Profil
habendorf
Fajn. Prostě chci udělat to, že při zaplym JS se zobrazí odkaz na topčlánky.cz (ono to jinak ani nejde), a když bude vypnutý, tak se objeví informace o odběru RSS (což jsi asi pochopil, předpokládám). Jak to tedy udělat, aby se to chovalo normálně (tedy tak, jak chci), a bylo to validní?
habendorf
Profil
Možností je mraky, např. dopsat inline styl pomocí document.write. To se mi ale zrovna dvakrát nelíbí, osobně bych to udělal nějak takhle:

<style>
#aaa a, #aaa.js_on span {display:none;}
#aaa.js_on a {display:inline;}
</style>

<p id="aaa"> Zde je
<a href="#">link</a>
<span> info o RSS
</span>.
</p>

<script>
document.getElementById('aaa').className="js_on";
</script>
vydrus
Profil
habendorf
Hm. To mi nejde. V případě vypnutého JS se jednoduše nezobrazí žádný odkaz.
habendorf
Profil
V případě vypnutého JS se jednoduše nezobrazí žádný odkaz.

V případě vypnutého JS se snad má dle tebe zobrazit „informace o odběru RSS“ a ne odkaz.
Navíc toto je princip, ne řešení servírované na zlatém talíři. Tu jednu třídu pro odkaz si tam snad zvládneš napsat sám, ne?

Jo a prosím, rádo se stalo.
vydrus
Profil
habendorf
No, zkusím se tím prokousat... ale JS opravdu není můj kamarád :)
habendorf
Profil
Přidáš třídu odkazu a adekvátně upravíš css, s JS to nemá nic společného.
vydrus
Profil
Já se do toho úplně zamotal, je už na mě pozdě. Experimentoval jsem s tím document.getElementById('aaa').className="js_on"; a spanem, a pořád nic.

Zkusil jsem něco vymyslet, ale nevím, jak to udělat. Když bude JS zaplý, tak chci, aby se nezobrazil ten span (s RSS) - zobrazí se jen možnost zahlasování (páč je to napsaný v JavaScriptu).

Můžeš mi pomoct? Asi na to sám fakt nepřijdu...



<p class="postmetadata alt"><small>Tento článek byl vložen k datu 22.9 2008 do kategorie Internet. Pokud se vám líbil, můžete k němu <a href="#respond">napsat názor</a>, nebo <script type="text/javascript"> obsah = 'pro něj <a target="_blank" href="http://www.topclanky.cz/pridat-odkaz/?kde=' + encodeURIComponent(document.URL) + '&nadpis=' + encodeURIComponent(document.title) + '">zahlasovat<\/a>.'; document.writeln(obsah); </script>.

<span *****> sledovat další články pomocí <a href="http://vydrus.ic.cz/?feed=rss">RSS</a>.</span></small></p>



***** - tenhle span se nezobrazí, pokud bude fungovat JS. Naopak Pokud JS bude vyplý, zobrazí se.
Chamurappi
Profil
Reaguji na vydruse:
1) Připiš si do HTML kódu někam třídu „js_on“ a nastyluj s jejím využitím vše tak, jak chceš, aby to vypadalo se zapnutým JavaScriptem.
2) Pak tu třídu „js_on“ smaž a nastyluj vše tak, jak chceš, aby to vypadalo s vypnutým JavaScriptem.
3) Pak teprve přidej ten habendorfův JavaScript, který při načítání stránky nastaví třídu „js_on“.

Není v tom žádná velká věda a už jsi teď silně nakopnutý správným směrem.
vydrus
Profil
Ták, nějak jsem to tam do toho zamontoval, už se to chová, tak, jak chci. Validní to sice není, ale to si později upravím.

Ale...

Při vypnutém JS se celý text "Tento článek byl vložen k datu [...blabla...]." zobrazuje normálně. Když JS zapnu, tak se text zvětší (myslím, že to má nějakou spojitost s tím small a těma všema Javascriptama, ale vůbec nevím, jak to dát do kupy, aby se to chovalo normálně...).
Toto téma je uzamčeno. Odpověď nelze zaslat.