Domanda

<!-- <script type="text/javascript">/*<![CDATA[*/  c-- ;//]]></script> -->

Quando ho la linea di cui sopra nella sezione di una pagina HTML semplice, Firefox 3.5.5 rende il finale -> come testo. Se cambio c-- a c- non è così. Tutte le idee che cosa sta succedendo qui? Ho ottenere un artefatto nelle mie pagine con questo a causa di una grande sceneggiatura che è stato scricchiolava. Posso modificare l'istruzione a c- = 1 ed evitare il problema per ora, ma .... mi piacerebbe sapere che cosa bit / byte sta mordendo il mio un $$.

È stato utile?

Soluzione

Ciò è dovuto a Firefox attuazione SGML (su cui si basava HTML) commenti rigorosamente. Ciò si verifica solo quando il documento viene caricato in modalità standard (cioè non v'è un DOCTYPE).

Il primo <! inizia un commento. Il primo -- entra in una sezione in cui sono consentiti caratteri >. Il secondo -- (nello script) lascia la sezione in cui sono consentiti caratteri >. Il > alla fine del </script> poi finisce il commento. Il seguente --> è quindi non fa più parte del commento e viene visualizzato come testo.

http://www.howtocreate.co.uk/SGMLComments.html per una guida completa al problema.

E 'anche interessante notare che il HTML 4 Specifica dice che 'gli autori dovrebbero evitare di mettere due o più adiacenti trattini all'interno commenti' e la HTML 5 Specifiche dice commenti non devono 'contenere due U + 002D caratteri trattino-meno consecutivi (-)'.

La soluzione, come hai trovato, è quello di non includere -- nel bel mezzo di un commento.

Altri suggerimenti

Tecnicamente non si è permesso di avere doppio trattino in un commento in HTML (o XML). Quindi, anche se i browser "permettono" se non è valido e dovrebbe fallire un validatore HTML.

Vedere sezione Commento di HTML 4 specifica

Non riesco a replicare questo. Non mostra su 3.0.1.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top