Autor Zpráva
josef66
Profil *
dobry den, jak validne (v XHTML trans 1.0 dokumentu) zapsat tento skript, prosim:

...
document.getElementById('neco').innerHTML="<a href="javascript:funkce('var');">neco</a>";
...


diky za pomoc

kamil
Chamurappi
Profil
Reaguji na josefa66:
Není validita zbytečná? Proč se o ni snažíš?

Kdybys skutečně užíval XHTML, tak by ses neptal, jak zapsat skript validně, ale jak ho zapsat tak, aby nezpůsobil nezobrazení stránky. A já bych ti poradil nahradit uvnitř skriptu všechny výskyty „<“ za „&lt;“.

Jenže ty používáš ve skutečnosti staré dobré HTML a validuješ oficiálním validátorem, který tě klame. Zkus český validátor. V HTML stačí k dosažení validity vepsat před lomítko v „</a>“ zpětné lomítko, tzn. „<\/a>“.

Krom toho bys měl podobně vyescapovat uvozovky kolem atributu href (místo „"“ psát „\"“), jinak se ti v JS předčasně ukončí řetězec a prohlížeč ti nahlásí syntaktickou chybu.
josef66
Profil *
2 Chamurappi

Ano, validita je pro me zbytecna, prvotni je funkcnost, coz dany skript u me splnuje stoprocentne. Nicmene validitu vyzaduje galerie, kam chce majitel web prihlasit, proto to musim vyresit.

Po tve rade a trochu guglovani jsem zkusil upravu se zpetnymi lomitky:

...
document.getElementById(\'neco\').innerHTML=\'<a href=\'javascript:funkce(\'var\');\'>neco</a>";
...


ale validator hlasi chybu zde (prvni zpetne lomitko ve stringu):

...
document.getElementById(\'neco\').innerHTML=\'<a href=\'javascript:funkce(\'var\');\'>neco</a>";
...


a rika:

You have used a character that is not considered a "name character" in an attribute value. Which characters are considered "name characters" varies between the different document types, but a good rule of thumb is that unless the value contains only lower or upper case letters in the range a-z you must put quotation marks around the value. In fact, unless you have extreme file size requirements it is a very very good idea to always put quote marks around your attribute values. It is never wrong to do so, and very often it is absolutely necessary.

a nakonec - nahrazeni „<“ za „&lt;“ nijak validitu nezmeni - naopak - validator zahlasi chybu u ampersandu ...

takze jsem nijak nepokrocil :(
Chamurappi
Profil
Reaguji na josefa66:
Mluvil jsem o uvozovkách kolem atributu href.

Tohle bude fungovat:
document.getElementById('neco').innerHTML="<a href=\"javascript:funkce('var');\">neco</a>";
Tohle bude validní XHTML:
document.getElementById('neco').innerHTML="&lt;a href=\"javascript:funkce('var');\">neco&lt;/a>";
Tohle bude validní HTML:
document.getElementById('neco').innerHTML="<a href=\"javascript:funkce('var');\">neco<\/a>";
nahrazeni „<“ za „&lt;“ nijak validitu nezmeni - naopak - validator zahlasi chybu u ampersandu
V tom případě je zádrhel i někde mimo místo, které jsi sem vložil.

Pokud nerozumíš anglickým hláškám, používej český validátor. Hlavně mně by při hledání příčiny významně pomohlo, kdybys ho alespoň jednou použil :-)
Pajuc
Profil *
Zaráží mě, že se nikdo v diskuzi nezmínil o sekci CDATA.
Chamurappi
Profil
Reaguji na Pajuce:
Ta snad něco vyřeší? Jen ucpe chřtán vadnému W3C Validátoru, protože (zatím) neověřuje podmínky z dodatku C.
Pajuc
Profil *
Ta snad něco vyřeší? Jen ucpe chřtán vadnému W3C Validátoru, protože (zatím) neověřuje podmínky z dodatku C

Dotaz zněl, cituji: jak validne (v XHTML trans 1.0 dokumentu) zapsat tento skript
Odpověď byla ve smyslu: používej entity a český validátor.

Moc mi to teda nesedí, protože já ke vložení skriptu do XHTML nepotřebuji ani jedno ani druhé.
Měsíček
Profil
Odpověď byla ve smyslu: používej entity a český validátor.

a tohle jsi nejspíše vynechal :

Tohle bude validní XHTML:

document.getElementById('neco').innerHTML="&lt;a href=\"javascript:funkce('var');\">neco&lt;/a>";


Moc mi to teda nesedí, protože já ke vložení skriptu do XHTML nepotřebuji ani jedno ani druhé.

Pochopitelně, protože prohlížeč to u tebe nebere jako XHTML.
Chamurappi
Profil
Reaguji na Pajuce:
Odpověď byla ve smyslu: používej entity a český validátor.
Entity jsou v tomto případě úspornější než CDATA sekce. Obojí je v rozporu s dodatkem C. Ale dobře, tak pro úplnost dodávám:
document.getElementById('neco').innerHTML="<![CDATA[<a href=\"javascript:funkce('var');\">neco</a>]]>";
Na český validátor jsem ho posílal také proto, že měl dle popsaných symptomů chybu i v něčem jiném. Tu bych pak mohl najít.

já ke vložení skriptu do XHTML nepotřebuji ani jedno ani druhé
Ještě jsem zapomněl na možnost vyhodit celý skript do jiného souboru.
Pajuc
Profil *
Měsíček
a tohle jsi nejspíše vynechal :
Nerozumím. Narážel jsem na to, že nikdo nenabídl řešení v podobě CDATA sekce, která je právě pro takové případy vhodná. Upřednostnily se entity. To mě dost zarazilo.

Pochopitelně, protože prohlížeč to u tebe nebere jako XHTML.
Opět tvé logice nerozumím. Jak to bere prohlížeč, přece záleží na tom, jaký MIME typ souboru přiřadím. A navíc zde neřešíme prohlížeče, ale validitu.
Pajuc
Profil *
Chamurappi
Na český validátor jsem ho posílal také proto, že měl dle popsaných symptomů chybu i v něčem jiném. Tu bych pak mohl najít.

Tazatel žádné symptomy v dotazu, na který jsi reagoval a v němž jsi ho odkazoval na svůj validátor, nepopisoval, pouze se ptal, jak validně zapsat skript. A na český validátor jsi ho posílal proto, aby se brodil tunami nesmyslných hlášek, pak smazal poslušně všechna "nadbytečná" lomítka a nakonec se picnul, když by zjistil, že se mu kvůli quirku rozsypal layout.
Chamurappi
Profil
Reaguji na Pajuce:
nikdo nenabídl řešení v podobě CDATA sekce, která je právě pro takové případy vhodná. Upřednostnily se entity.
Chceš-li zapsat kousek kódu viditelný pro návštěvníka, také saháš po CDATA sekci?

Jak to bere prohlížeč, přece záleží na tom, jaký MIME typ souboru přiřadím. A navíc zde neřešíme prohlížeče, ale validitu.
Validita též záleží na MIME typu.

na český validátor jsi ho posílal proto, aby se brodil tunami nesmyslných hlášek
Také si nemyslím, že by validita byla důležitá, ale kdo chce kam…

a nakonec se picnul, když by zjistil, že se mu kvůli quirku rozsypal layout
Český validátor téměř nikdy neradí měnit <!doctype> takovým způsobem, aby se změnil vykreslovací režim. Na to si dávám pozor.
Pajuc
Profil *
Chamurappi
Validita též záleží na MIME typu.
Nezáleží. MIME typ je jakýmsi závazným ukazatelem pro interprety, kterým parserem mají soubor zpracovat. Jinak řečeno, může existovat validní XHTML dokument, který bude mít přiřazen špatný MIME typ. To ale nic nezmění na tom, že samotný kód bude validním XHTML. Ale vypadá to, že nás Měsíček dostal daleko od původního tématu. Nechtěl jsem, aby se z krátké zmínky o CDATA sekci, stala opakovaná sáhodlouhá témata o XHTML.
Měsíček
Profil
Jinak řečeno, může existovat validní XHTML dokument, který bude mít přiřazen špatný MIME typ.

Zajímavá informace, ale, žel ji nevěřím.

EDIT: jestli myslíš validitou takovej ten hypnotizující zelený pruh a of.validátor tak možná ano.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0