Przy projektowaniu strony KIKE natknąłem się na problem dotyczący osadzania skryptów JS przy jednoczesnej walidacji. Z założenia buduje strony w oparciu o standard XHTML 1.0 Strict dla stron statycznych (Transitional dla CMS'ów).
JS na tej stronie odpowiada za zabezpieczenie antyspamowe adresów e-mail.
Wstępnie wrzucony kod nie przeszedł walidacji, więc oparłem się na źródłach internetowych (np. Kurs BrowseHappy). Wg znalezionych wytycznych poprawnie powinno się:
1. umieszczać w <head> przy linkowaniu do oddzielnego pliku skryptu .js :
<script src="/plik.js" />
zamiast
<script src="/plik.js"></script></p><p>ten 2gi zapis jest zgodny ze zwykłym HTML'em)</p> <p>Niestety ten patent powodował kompletny <span style="text-decoration: underline;" _mce_style="text-decoration: underline;">brak wyświetlenia zawartości kodu .html przez Firefox 3.6 i Internet Explorer 8. Więc zmuszony byłem zastosować zamknięcie </script> !!!
2. umieszczać w <head> kod JS z pominięciem:
language="Javascript"</p> <p>i zamiast powyższego użyć atrybut "type" w postaci:
<script type="text/javascript"> if (2 < 4) {}</script></p> <p>można też skrypt wsadzić w blok CDATA, dzięki czemu wstawiony w nim kod HTML zostanie po prostu wyświetlony przez przeglądarkę zamiast jego przetworzenia:</p> <p class="code"><script type="text/javascript"><![CDATA[ if (2 < 4) {}]]></script></p> <h3>3. koniecznie zamieniać "<", ">" na encje
Encje: < i > - chyba że wrzucamy kod w blok CDATA, przykład powyżej.
4. zrezygnować ze znacznika <noscript>
Dla zgodności z XHTML 1.0 Strict (przy Transitional daje radę) należy kompletnie zrezygnować ze znacznika:
<noscript>Tekst dla userów z wyłączoną obsługą JS</noscript>