Autor Zpráva
nezbeda
Profil *
Dobrý den, potřeboval bych pomoct s JS kódem.

<script language="JavaScript" type="text/javascript">

<!--
document.write('<script src="http://www.adresa.com/soubor.js"></script>');
//-->

</script>


Nenapadá mě, jak přes dokument.write vypsat tag </script>, přičemž aby neukončil ten právě probíhající - tedy script, který ho vlastně vypsal.
Zkoušel jsem už i vylomítkovávat a věci typu:

<script language="JavaScript" type="text/javascript">
<!--
document.write('<script src="http://www.adresa.com/soubor.js">');
//-->
</script>

// a za tim hned tenhle skript

<!--
<script language="JavaScript" type="text/javascript">
document.write('</script>');
//-->


Přesto by mě ale zajímalo, jakým způsobem se tohle řeší čiště. Při hledání jsem bohužel nebyl úspěšný.
Hooonza
Profil
Teď nevím přesně, o co ti jde, např toto? :
<script language="JavaScript" type="text/javascript">
<!--
document.write('&lt;script src="soubor.js"&gt;&lt;/script&gt;');
//-->
</script>
nezbeda
Profil *
Ne bohužel, jak jsem pochopil a odzkoušel - tvým skriptem se obsah toho document.write vypíše jako text, tedy: <script src="soubor.js"></script> ....

Šlo mi o to, aby se ten např. soubor.js vykonal, tedy žádné &lt; ap. Přesto děkuji.

Kdyby někdo věděl, jak v document.write použít "</script>", ale tak aby to předčasně neukončilo ten samotný skript obsahující document.write, byl bych za to moc rád.
Mike8748
Profil
document.write('</scr'+'ipt>');
Hooonza
Profil
Mike8748
No:-)
nezbeda
Profil *
já to zkusím ještě jednou popsat a teď už hodně zjednoduším:

tohle:
<script src="http://www.adresa.com/soubor.js"></script>


bych chtěl aby mi document.write vypsal - celé odpoledne se o to snažím a buď je to nevalidní a nebo to vůbec nefunguje. Skript, který je na jiné doméně do stránky vepisuju přes document.write kvůli validitě....
Ono to vypadá, že to asi ani nejde - aby document.write vypsal skript, který je započat <script> a ukončen </script> a přitom aby se ten skript vykonal a ten vnější řádně dokončil. Vlastně to je skript ve skriptu.
Chamurappi
Profil
Reaguji na nezbedu:
Metoda document.write vepisuje kód až za aktuální element <script>, nikoliv dovnitř.
Funkční řešení ti už popsal Mike8748.

do stránky vepisuju přes document.write kvůli validitě
Téhle motivaci nerozumím. Mohl bys ji objasnit, prosím?
vertigo4
Profil
a můžu se zeptat, k čemu je tohle dobré?
nezbeda
Profil *
jejda, já nad tím chvilku přemýšlel, už jsem to i chtěl začít realizovat ale nakonec jsem si myslel, že si Mike8748 dělal legraci - tímto mu moc děkuji, vypadá to, že tím je to vyřešené.

a teď k tomu, k čemu to mám:
skript, například tento od google:
<script src="http://www.gmodules.com/ig/ifr?url=http://www.google.com/ig/modules/translatemypage.xml&up_source_language=cs&w=160&h=60&title=&border=&output=js"></script>

potřebuji dát na stránky - stránky jsou dosud validní a jen po klasickém přidání validátor začne vypisovat chyby - napadlo mě tedy vypsat ten kód javascriptem. Problém ale nastal ve vykonávání takové skriptu, kdy když přišlo na řadu </script> (ještě od toho google skriptu) tak se přerušil i ten můj "vypisovací" a ve výsledku se neprovedl ani jeden ani druhý. Možná (určitě) se vám to zdá být jako nelogické, ale vyřešit nevaliditu do stránek přidávaných skriptů mi přišlo jako nejvhodnější. Děkuji.
vertigo4
Profil
nezbeda
ach jo, kvůli validitě vymýšlet takovýhle hlouposti...
nezbeda
Profil *
tady je hotový a funkční skript:
<script type="text/javascript">
<!--
document.write('<script language="JavaScript" src="http://www.gmodules.com/ig/ifr?url=http://www.google.com/ig/modul es/translatemypage.xml&up_source_language=cs&w=160&h=60&title=&border= &output=js" type="text/javascript">'); 
document.write('</scr'+'ipt>');
//-->
</script>


V předešlel příspěvku jsem trochu zkomolil poslední větu - prostě: javaskript mi přišel jako nejvhodnější varianta k dodatečnému vkládání nevalidních skriptů (tak aby je validátor neviděl).

Ještě jednou moc děkuji za inspiraci - jsem si fakt myslel, že to byl fór to s tím </scr'+'ipt> :-)
Chamurappi
Profil
Reaguji na nezbedu:
nakonec jsem si myslel, že si Mike8748 dělal legraci - tímto mu moc děkuji, vypadá to, že tím je to vyřešené
Funkční ano, validní nikoliv.

jen po klasickém přidání validátor začne vypisovat chyby - napadlo mě tedy vypsat ten kód javascriptem
Je zvláštní, že tě nenapadlo přečíst si, o jaké chyby jde, a už se pídíš po nějakém oblbováku, který zacpe chřtán validátoru.
Proč se snažíš o validní kód?
nezbeda
Profil *
Právě jsem projel mé stránky službou validator.w3.org a při XHTML 1.0 Transitional je to naprosto validní. Naopak, když jsem dal projet jen ten google script, tak to vypsalo 19 chyb. V html a css se už i tak trochu vyznám, ty chyby mi neříkají ale naprosto vůbec nic - navíc se ta nevalidita týká přímo té cesty v scr a to ani nevím, zda-li to vůbec opravit mohu, snad jen nějakým přesměrováváním a jelikož se jedná o službu google překlad stránek, asi to ani není možné (refferer ap.) Použít k tomu JS mi stále připadá, jako nejlepší volba (zvláště když ani pořádně neovládám php) - fungovat to funguje a klasický validátor k tomu správně ani pokud vím nemá přistupovat, zvlášťě když je to obaleno tím <--- a //-->. Web založený na redakčním systému a mém vzhledu jsem měl dosud validní, nechtěl jsem to přidáním jednohu skriptu zhatit. Já vím, že validita je +- o ničem, znám váš web a vím, jaký jste na to odborník (odborné články na na lupě ap.), ale z pohledu mého - začátečníka se mi právě XHTML 1.0 Transitional zdá jako ještě solidní norma (byť často označovaná za slepou větev), zvláště když jsem se přesvědčil při tvorbě vzhledu, že co bylo validní, tak většinou i vypadalo stejně ve 4 různých prohlížečích.
vertigo4
Profil
nezbeda
Snažíš se o validní kód, nebo o kód šmakující validátoru?
nezbeda
Profil *
Vy už mě tady zkoušíte :-)
V tuto chvíli nevím, jak jinak se pozná validní kód než způsobem, že se předloží online validátoru (nejlépe tomu oficiálnímu). Když prohlásíte, že máte validní stránky, myslím si, že 90% lidí co o tom něco málo ví (jako já) a budou si to tvrzení chtít ověřit, ověří si to právě na stránkách w3. Takže ano, kód jsem průběžně dával ověřovat validátoru a upravoval jej tak, aby šmakoval. Přesto validitě byla nadřazena přístupnost a tak ten web vypadá naprosto stejně v ie, ff, opeře a safari.
Chamurappi
Profil
Reaguji na nezbedu:
službou validator.w3.org a při XHTML 1.0 Transitional je to naprosto validní
Součástí zmíněné služby by se měla brzy stát i kontrola dalších požadavků specifikace XHTML 1.0 (přesněji dodatku C), který ten tvůj kousek kódu porušuje.

ty chyby mi neříkají ale naprosto vůbec nic
Zkus český validátor. Když projdeš v něm se zelenou, projdeš i oficiálním.

navíc se ta nevalidita týká přímo té cesty v src a to ani nevím, zda-li to vůbec opravit mohu
Stačilo by nahradit všechny „&“ za „&amp;“. Zápis s entitami je ekvivalentní, každý HTML parser (prohlížeč i robot) si dovede přeložit „&amp;“ zpátky na „&“.

jelikož se jedná o službu google překlad stránek, asi to ani není možné
Validátor hodnotí pouze ten HTML kód, nekouká se, na co se odvolává a čí to je. Bere ten samý řetězec, který jsi poslal sem na fórum a vyhodnocuje ho podle formálních pravidel.

klasický validátor k tomu správně ani pokud vím nemá přistupovat, zvlášťě když je to obaleno tím <--- a //-->
V XHTML k tomu nemá přistupovat ani validátor, ani prohlížeč. V HTML se validátoru nebude líbit sekvence znaků „</“ (bude nadávat, že ukončuješ element „SCR“), prohlížeče to přejdou. Webové prohlížeče i můj validátor budou tvůj kód interpretovat jako HTML, protože <!doctype> nerozhoduje. V opravdovém XHTML by ti nefungovala metoda document.write.

co bylo validní, tak většinou i vypadalo stejně ve 4 různých prohlížečích
Validita prohlížeče moc nezajímá, řada kontrolovaných pravidel ani není navržená tak, aby mohla mít praktický dopad. Zářným příkladem je ten tvůj překousnutý "</scr" + "ipt>" — fungovat bude. Nebo ampersand nezapsaný jako „&amp;“ — také fungovat bude.
Současné prohlížeče se podle <!doctype> deklarace nalezené HTML parserem rozhodují mezi dvěma vykreslovacími režimy: standardním a quirkem. Tvůj XHTML <!doctype> vyvolává (stejně jako řada HTML <!doctypů>) standardní režim.
nezbeda
Profil *
Reaguji na Chamurappiho:
"Zkus český validátor. Když projdeš v něm se zelenou, projdeš i oficiálním."
Jsem to právě přes něj, ještě než jsem četl tento váš text, zkusil a opravdu - stačilo to nahrazení & (jak jsem se dočetl i tam ve výpisu) a je to validní, takže vlastně mohu v tomto případě upustit od toho javascriptu. Každopádně mi to je i tak k dobru, už vím, že tagy mohu v případě potřeby porcovat :-) a že standardně budu raději validovat přes ten český validátor. Ještě jednou děkuji za vaše pro mne hodnotné připomínky.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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