Na posledním školení jsme narazili na zajímavost HTML, která mě (v tu chvíli nepříjemně) překvapila.
Podívejte se na následující kus kódu. Vyskočí okénko se zprávou
Barnes & Noble
nebo Barnes & Noble
?
<body>
<h1>Barnes & Noble test</h1>
<script>
alert('Barnes & Noble');
</script>
</body>
Máte tip? Tak si ho ověřte. Zajímavé přitom je, že pokud bychom entitu nepoužili, bude výsledek nevalidní.
Komentáře
pixy #1
Washo #2
Zatímco tady:
<span onclick="alert('Barnes & Noble');">
Klik</span>
to funguje normálně.
Katoga #3
já to řešim takhle:
(pokud to je „truu xhtml“ (posílá se jako application/xhtml+xml), je možno odstranit JS komentáře)
myf #4
No jestli na tom záleží, tak
alert('Barnes '\u0026' Noble')
by to mohlo řešit, ne?myf #5
(Eh, smz bez apostrofů ve stringu, pardón.)
LLook #6
#1 pixy, Je vidět, že tomu rozumíš. 😉
Při zpracování XML (a proto i XHTML) jsou všechny zakomentované věci ignorovány, jako by nebyly. Řídící znaky uvnitř jakékoli značky je v XML (a proto i v XHTML) nutné buďto nahradit entitami, nebo uzavřít do sekce
<![CDATA[ ]]>
.Kdyby David svůj kód s
"Barnes & Noble"
označil za XHTML (application/xhtml+xml), tak by to bylo nejen well-formed, ale taky by to opravdu vypisovalo „Barnes & Noble“. Zatímco tvůj příklad by v XHTML nevypsal vůbec nic.Tento článek byl uzavřen. Už není možné k němu přidávat komentáře.