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