JavaScript a validní XHTML
Maxiorel používá XHTML 1.0 Transitional, ve kterém nemůžete jen tak vkládat JavaScriptový kód. Interpret XHTML totiž jeho značky považuje za součást XHTML a snaží se hledat odpovídající párové značky, což logicky vyústí v chybu. Řešení je několik. Tam, kde to je možné, použijte oddělený soubor s javascriptovým kódem, který vložíte do XHTML stránky pomocí následující značky:
<script type="text/javascript" language="javascript"<br /> src="javascript.js"><br /></script>
Pokud kód JavaScriptových funkcí nechcete nebo nemůžete umístit do samostatného souboru, který posléze zavoláte, stačí vložit mezi značky <script></script> speciální poznámku, která zamezí kontrole javascriptového kódu ze strany interpreta XHTML. Tím označením mám na mysli dvojici poznámek //<![CDATA[ a //]]>. Ve výsledku to může vypadat nějak takto:
<script type="text/javascript"><br />//<![CDATA[<br />alert('ahoj');<br /> //]]><br /></script>
XHTML a značka noscript
Občas můžete najít hlášení, které sděluje, že element noscript nemůžete mít v daném umístění:
document type does not allow element "noscript" here; missing one<br />of "object", "applet", "map", "iframe", "button", "ins", <br />"del" start-tag
Řešení je opět velice jednoduché. Dvojice značek <noscript></noscript> slouží k vypsání kódu, který se zobrazí uživatelům s vypnutým JavaScriptem. Aby to prošlo validací, je nutné element noscript umístit do odstavce nebo divu. Například takto:
<p><br /><noscript><br />Váš prohlížeč nepodporuje JavaScript.<br /></noscript><br /></p>
Drupal a dvojitý element s id=“edit-submit“
Na svém webu jsem se setkal s tím, že redakční systém Drupal mi vypisoval do XHTML dvakrát element se stejným identifikátorem edit-submit. Ten se zaprvé vyskytuje u vyhledávacího políčka, za druhé ve formuláři, který se zobrazuje pod komentáři k článku a umožňuje návštěvníkům vybrat různý způsob zobrazení těchto komentářů. Není vyloučeno, že se tento element vypisuje i jinde. Žádná oprava celého Drupalu, která by toto řešila, momentálně asi neexistuje. Z celé řady řešení, které lze na drupal.org najít, se mi líbila úprava souboru template.php v motivu vzhledu.
Nemusíte upravovat standardní moduly a vyhnete se riziku, že při jejich aktualizaci tyto úpravy zmizí. Podmínkou je, aby web používal pro správu motivů vzhledu phptemplate. Ve složce s motivem vzhledu tedy vytvořte, případně otevřete pro úpravy soubor template.php a doplňte do něj následující kód:
/**<br />* Correct 'ID "edit-submit" already defined' validation error caused<br />* by search forms.<br />*/<br />function phptemplate_submit($element) {<br />srand ((double) microtime( )*1000000);<br />$random_number = rand(100,999);<br />return <br /> str_replace('edit-submit','edit-submit-'.$random_number,<br /> theme('button', $element));<br />}<br />// return a následující dva řádky patří na jeden jediný
Co tato úprava konkrétně dělá? Při generování stránky vyhledá všechny výskyty řetězce edit-submit, ke kterému do názvu doplní pomlčku a náhodné číslo. Jednoduché, funkční a přitom velmi jednoduše proveditelné řešení.
Také jste řešili nějaké problémy s validitou kódu Drupalu? Byl na vině systém samotný nebo vámi vytvořená šablona? Co říkáte na (ne)validitu kódu různých počitadel přístupu? Potýkali jste se s tím někdy? Dejte vědět do komentáře pod článkem, budu rád za vaše poznatky.
Tvůrce webů z Brna se specializací na Drupal, WordPress a Symfony. Acquia Certified Developer & Site Builder. Autor několika knih o Drupalu.
Web Development Director v Lesensky.cz. Ve volných chvílích podnikám výlety na souši i po vodě. Více se dozvíte na polzer.cz a mém LinkedIn profilu.
Přidat komentář