Klávesové zkratky na tomto webu - rozšířené Na obsah stránky

Translate to English… Ins Deutsche übersetzen…

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 &amp; Noble test</h1>
        <script>
        alert('Barnes &amp; 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 RSS 2.0 komentářů » přidat

avatar

#1 pixy http://pixy.cz nový

  1. do stringu Javascriptu HTML entity nepatří, má tam být jen „&“
  2. když to bude HTML dokument, tak to validní JE
  3. máš-li to v XHTML, je syntaxe přísnější a CDATA ve skriptu musí být HTML-zakomentována – takže tohle bude validní i v XHTML:
<script type="text/javascript">
<!--
alert('Barnes & Noble');
//-->
< /script>

Posláno 9. 12. 2008 ve 23.46 | Odpovědět
Na komentář reagoval [6] LLook
avatar

#2 Washo vjuchelka@gmail.com nový

Zatímco tady:

<span onclick="alert('Barnes &amp; Noble');">Klik

to funguje normálně.

Posláno 10. 12. 2008 v 8.54 | Odpovědět
avatar

#3 Katoga katoga.cz@gmail.com nový

já to řešim takhle:

<script type="text/javascript">
/* <![CDATA[ */
alert('Barnes & Noble');
/* ]]> */
</script>

(pokud to je „truu xhtml“ (posílá se jako application/xhtml+xml­), je možno odstranit JS komentáře)

Posláno 10. 12. 2008 v 10.41 | Odpovědět

#4 myf nový

No jestli na tom záleží, tak alert('Barnes '\u0026' Noble') by to mohlo řešit, ne?

Posláno 11. 12. 2008 v 10.02 | Odpovědět

#5 myf nový

(Eh, smz bez apostrofů ve stringu, pardón.)

Posláno 11. 12. 2008 v 10.04 | Odpovědět
avatar

#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 &amp; 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.

Posláno 11. 12. 2008 ve 20.03 | Odpovědět

Tento článek byl uzavřen. Už není možné k němu přidávat komentáře ani hlasovat

Výtah na začátek článku na první komentář

Názory čtenářů v diskusích nejsou názory provozovatele webu, a ten za jejich obsah neodpovídá.

phpFashion © 2004, 2010 David Grudlo webu

Pokud není uvedeno jinak, podléhá obsah těchto stránek licenci Creative Commons BY-NC-ND Creative Commons License BY-NC-ND

Ukázky zdrojových kódů smíte používat s uvedením autora a URL tohoto webu bez dalších omezení.