Na navigaci | Klávesové zkratky

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

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

    avatar
    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>
    před 8 lety | reagoval [6] LLook
  2. Washo #2

    avatar

    Zatímco tady:

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

    to funguje normálně.

    před 8 lety
  3. Katoga #3

    avatar

    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)

    před 8 lety
  4. myf #4

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

    před 8 lety
  5. myf #5

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

    před 8 lety
  6. LLook http://xn--1caaa.info/ #6

    avatar

    #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.

    před 8 lety

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