Autor Zpráva
Nich
Profil
Zdravím, mám problém s validací skriptu, který když je v <head> tak funguje v pohodě, ale validací neprojde kvůli '<' znaku v jedné podmínce, proto potřebuji dát skript do externího souboru. S tím mám ale potíž:

script:
var show = 1; 
//Počet obrázků
var maxi = <?php echo $_SESSION['max'] ?>; 

function zpet() 
{   
   show = show - 1;
   if(show <= 0) {show = maxi;}
   document.getElementById('show_img').src='/images/show_'+show+'.jpg';         
   zmena_textu(); 
}


Tohle samozřejmě v externím souboru nefunguje kvůli příkazu echo...
nejde nějak získat hodnotu z sessionu v externím skriptu?
Chamurappi
Profil
Reaguji na Nicha:
ale validací neprojde kvůli '<' znaku v jedné podmínce
Jakou validací? Čeho? V HTML to menšítko být smí, v X(HT)ML způsobí fatální chybu (=> totální nefunkčnost stránky).

proto potřebuji dát skript do externího souboru
I pokud přistoupíme na předpoklad, že existuje vážný důvod, proč nemít v kódu interního skriptu menšítko, tak nepotřebuješ.
Joker
Profil
Nich:
funguje v pohodě, ale validací neprojde
Tak jestli to funguje a validátor si stěžuje na něco co ani nemá validovat, kde je problém?

Při zpracování XHTML stránky jako XML by to menšítko problém byl, viz Chamurappi. Dá se to řešit obalením skriptu do bloku CDATA:
<script type="text/javascript">
//<![CDATA[
(kód)
//]]>
</script>
Chamurappi
Profil
Reaguji na Jokera:
Nebo entitou &lt;.
Ty JS komentáře tam máš zbytečně :-)
Nich
Profil
CDATA už jsem zkusil, ale když ho takhle zavřu, tak to přestane úplně fungovat.
Tím fungovat myslím, že pokud script (funkci) spustím takhle:

<input type="submit" value="" name='zpet' id='dolevaa' class='sipka' alt="" onclick="zpet()" />


tak se při použití CDATA nic nestane... bez něj to funguje.

EDIT: validuju na XHTML strcit 1.0
_es
Profil
Nich:
validuju na XHTML strcit 1.0
Ale mal by si overovať validitu HTML, viď [#2] Chamurappi.
Nich
Profil
_es:
takže když mám celej web napsanej v XHTML, tak budu ověřovat kód ve validátoru jako by byl HTML? Trochu na hlavu ne? :D Já chci validní stránku v XHTML a při tom použít ten script/funkci :-) ... abysme si rozuměli.
_es
Profil
Nich:
takže když mám celej web napsanej v XHTML
Neverím, ukáž, prehliadačom (asi) tvrdíš, že to je HTML, tak by si mal logicky overovať validitu pre HTML.
Nich
Profil
Asi ti nějak nerozumím co se mi snažíš říct...

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 


Doctype: XHTML 1.0 Strict

character "<" is the first character of a delimiter but occurred as data
   if(show <= 0) {show = maxi;}


validuju XHTML
_es
Profil
Nich:
O tom, či prehliadač vezme súbor ako HTML alebo XHTML nerozhoduje <!doctype>.
Nich
Profil
Ale proč tu řešíme pořád dokola tohle? Když to zvaliduju pod HTML tak je tam moc errorů a warningů protože je web dělanej na XHTML

Mě zajímalo jak úspěšně zvalidovat ten script na XHTML překladu, tak aby zároveň ten script fungoval.
Věc kterou nechápu, je že když to zakotvím do CDATA, že to přestane fungovat.
Joker
Profil
Nich:
mám celej web napsanej v XHTML
A zpracovává se někdy jako XML? Pozná se to celkem snadno, protože zpracování toho dokumentu jako XML skončí na té konstrukci show<=0 skončí chybovou hláškou o neplatném znaku „=“ (pokud neskončí chybovou hláškou už dříve).

Jestli se to zpracovává vždycky jako HTML, je zbytečné to řešit, a s ohledem na:
když ho takhle zavřu, tak to přestane úplně fungovat
je to vcelku zbytečné úsilí a zanášení potenciálních chyb.

edit:
Věc kterou nechápu, je že když to zakotvím do CDATA, že to přestane fungovat.
A jak vypadá ta dotyčná značka <script>?
Chamurappi
Profil
Reaguji na Nicha:
takže když mám celej web napsanej v XHTML, tak budu ověřovat kód ve validátoru jako by byl HTML?
Kdyby byl opravdu XHTML (což určuje MIME typ v HTTP hlavičce), tak by to menšítko způsobilo, že nebude fungovat v žádném prohlížeči.

že když to zakotvím do CDATA, že to přestane fungovat
Protože používáš HTML a tam CDATA nedává prohlížeči smysl. Deklarace <!doctype> nerozhoduje.

protože je web dělanej na XHTML
Není, je jen částečně optimalizovaný pro vadný validátor. Je otázka, zda je víc na hlavu opravovat HTML kód podle pravidel HTML, která (víceméně) používají prohlížeče, nebo zda opravovat HTML podle pravidel XHTML, která navzdory pokynům standardizátorů používá jen W3C validátor.
Nich
Profil
MINE XHTML asi fakt nebude... jak to ale teda vyřešit? Změnit doctype na HTML 4.01 strict a všechny tagy jako např. <img /> přepisovat jak jantar? :D

Chamurappi, Joker:
dík za objasnění CDATA
Joker
Profil
Nich:
Já bych doporučoval to nechat tak jak to funguje s tím, že validátor si bude prostě stěžovat na menšítko.
Jinak teda ten blok CDATA by šel vložit do HTML komentáře:
<script type="text/javascript">
<!--<![CDATA[
(kód)
//]]>-->
</script>
Akorát teoreticky by se pak zase ve skriptu nesmělo vyskytovat „--“ (což v JS je operátor snížení o 1).
Nich
Profil
Tak jo díky všem za pomoc
Chamurappi
Profil
Reaguji na Jokera:
Jinak teda ten blok CDATA by šel vložit do HTML komentáře
+ dát bacha, aby nikdy nebyl celý skript v jednom řádku, protože první řádek skriptu se celý ignoruje, pokud začíná na <!--. S tím si jde užít také hodně srandy.


Reaguji na Nicha:
Změnit doctype na HTML 4.01 strict a všechny tagy jako např. <img /> přepisovat jak jantar? :D
Vykašlat se na validátor. Nebo validovat kód jako HTML 5, kde je toho mnohem víc dovoleno. Prohlížeče stejně nerozlišují verze HTML a ze všech specifikovaných verzí mají nejblíž k návrhům HTML 5.

Mimochodem ten skript jde docela snadno upravit tak, aby menšítko neobsahoval, protože podmínka A < B jde zapsat i jako B > A, ale opravdu není důvod hnát se za „XHTML 1.0 Strict Valid!“.
Nich
Profil
Chamurappi:
ono je to už jedno zmenil jsem doctype a validuju pro HTML 4.01 a už mám všechno validní... takže díkas :-)

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0