webForumDet fria alternativet

komentar vs CDATA

3 svar · 670 visningar · startad av TriKri

TriKriMedlem sedan juli 20079 inlägg
#1

vad är det för skilnad på om man använder sig av

<!--
  En kommentar
-->

mot om man använder sig av

<![CDATA[
  En annan kommentar
]]>

Vad jag förstår så ska båda koderna göra så att parsern struntar i den som står innanför? På W3Schools använder de båda de här sätten att kommentera när de ger exempel på JavaScript och hur man ska göra för att en gammal webläsare inte ska skriva ut scriptet i klartext.

Vad jag förstår så är det senare exemplet med CDATA mer riktigt att använda, men jag förstår inte varför. Om båda gör samma sak så är det ju lättare att använda det övre.

spangoMedlem sedan juni 20006 147 inlägg
#2

CDATA är det mer xml-korrekta sättet att göra det på, det stämmer. En kommentar ska just vara en kommentar, och egentligen ska den helt ignoreras av parsern. CDATA däremot, säger att "alla tecken innan nästa förekomst av ]]> ska tolkas precis som de är", vilket betyder att man kan använda <, > och & precis som man behagar utan att det blir parsningsfel. Som en fotnot kan även nämnas att -- i ett script som ligger inom kommentar borde ge parsningsfel (vilket det inte gör, men ändå).

Anledningen till att man använde kommentarer var för att jättejättegamla browsers som inte förstod script-taggen skulle ignorera innehållet, men det är knappast motiverat idag. Browsers som stöder HTML 4 men inte kan köra script förstår ändå scripttaggen, och vet att det som är däri inte ska visas.

TriKriMedlem sedan juli 20079 inlägg
#3

Ok, tack för snabbt svar! Nu klarnade det lite

zcorpanMedlem sedan dec. 20042 269 inlägg
#4

Det här är komplicerat... :)

<![CDATA[ ... ]]> kan bara användas i XML och är inte en kommentar, bara ett alternativt sätt att skriva text. Tex betyder följande samma sak:

<foo><![CDATA[ <foo &bar ]]></foo>
<foo> &lt;foo &amp;bar </foo>

Det här gäller inte för HTML. Man kan inte använda CDATA-sektioner i HTML. (Vilket också gäller för "XHTML som text/html".)

<script> i HTML är ett sk "CDATA-element", vilket betyder att man kan redan använda < och & som man vill; det enda man behöver vara försiktig med är att använda "</script" inuti eftersom det förmodligen stänger elementet... ;) Mer konkret så är "<!--" i <script> inte en början på en kommentar utan bara texten "<!--", och samma gäller för "<![CDATA[" och "<gobbledegook" (men de två senare resulterar förmodligen i syntaxfel i JS-motorn).

Genererad på 486 ms · cache AV · v20260730165559-full.f96bc7eb