Barnes & Noble v JavaScriptu
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
» přidat
Tento článek byl uzavřen. Už není možné k němu přidávat komentáře ani hlasovat

#1 pixy http://pixy.cz nový
#2 Washo vjuchelka@gmail.com nový
Zatímco tady:
<span onclick="alert('Barnes & Noble');">Klikto funguje normálně.
#3 Katoga katoga.cz@gmail.com nový
já to řešim takhle:
(pokud to je „truu xhtml“ (posílá se jako application/xhtml+xml), je možno odstranit JS komentáře)
#4 myf nový
No jestli na tom záleží, tak
alert('Barnes '\u0026' Noble')by to mohlo řešit, ne?#5 myf nový
(Eh, smz bez apostrofů ve stringu, pardón.)
#6 LLook http://xn--1caaa.info/ nový
#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.