Rätt CDATA-syntax för javascript

När man vill infoga ett javascript i sin html-sida och samtidigt följa XHTML-standard måste man innesluta scriptet i en CDATA-sektion för att XHTML-parsningen ska strunta i scriptkoden (den är ju inte giltig XML). Syntaxen för en CDATA-sektion i XML är att den inleds med <![CDATA[ och avslutas med ]]>. För att få det rätt i javascript-sammanhang måste man lägga till javascripts kommentars-syntax // för att just dessa rader inte ska tolkas som javascript. Slutresultatet blir alltså så här:

<script type="text/javascript">
//<![CDATA[
alert("Här ska scriptet vara.");
//]]>
<script>

Om man förbiser att kommentera bort CDATA-syntaxen får man ett javascriptfel, Firebug ger följande kryptiska felmeddelande: Syntax error <![CDATA[\n. Det här lärde jag mig den hårda vägen när jag i dagarna skulle implementera SyntaxHighlighter här på denna blogg. Bloggers HTML-malls-redigerare kräver "well-formed XHTML" så den säger ifrån om något är fel i det avseendet. Men det gick utmärkt att posta mina ändringar utan de små javascript-snedstrecken för kommentarer // vid CDATA-start och -slut... Istället för att inse att <![CDATA[ självfallet inte är giltig javascript hängde jag upp mig på det där \n som Firebug infogat i felmeddelandet. Kunde det vara så att Blogger inte tillät "inline" javascript, ska jag bli tvungen att länka in en separat .js-fil som då måste hostas nån annanstans? Till slut snubblade jag i alla fall över lösningen och sen hittade jag också denna sida som beskriver CDATA-syntaxen för javascript på ett ypperligt sätt (på engelska).

No comments :

Post a Comment