doppio trattino nello script rende Firefox rende stranamente
-
13-09-2019 - |
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 $$.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.
Non riesco a replicare questo. Non mostra su 3.0.1.