As tags CDATA são sempre necessárias nas tags de script e, se sim, quando?
Em outras palavras, quando e onde é isso:
<script type="text/javascript">
//<![CDATA[
...code...
//]]>
</script>
preferível a isso:
<script type="text/javascript">
...code...
</script>
javascript
html
xhtml
cdata
Brad
fonte
fonte
Respostas:
Uma seção CDATA é necessária se você precisar que seu documento analise como XML (por exemplo, quando uma página XHTML for interpretada como XML) e desejar poder escrever literalmente,
i<10
ea && b
nãoi<10
ea && b
, pois XHTML analisará o código JavaScript como dados de caracteres analisados por oposição aos dados de caracteres por padrão. Isso não é um problema com scripts armazenados em arquivos de origem externos, mas para qualquer JavaScript embutido em XHTML, você provavelmente desejará usar uma seção CDATA.Observe que muitas páginas XHTML nunca foram planejadas para serem analisadas como XML; nesse caso, isso não será um problema.
Para uma boa descrição sobre o assunto, consulte https://web.archive.org/web/20140304083226/http://javascript.about.com/library/blxhtml.htm
fonte
&
e<
personagens, você não precisa de uma seção CDATA; funcionará bem em HTML e XHTML. Você pode conseguir isso facilmente colocando todo o código significativo em scripts externos e usando scripts embutidos para, por exemplo. inicialize variáveis (escape&
/<
para\x26
/\x3C
em literais de string, se necessário).Quando os navegadores tratam a marcação como XML:
Quando os navegadores tratam a marcação como HTML:
Quando os navegadores tratam a marcação como HTML e você deseja que sua marcação XHTML 1.0 (por exemplo) seja validada.
fonte
/* ... */
, porque caso contrário, se as quebras de linha são removidos, o código vai quebrarHTML
Um analisador de HTML tratará tudo entre
<script>
e</script>
como parte do script.Algumas implementações nem precisam de uma tag de fechamento correta; eles param a interpretação do script em ".</
", o que é correto de acordo com as especificaçõesPortanto, em HTML, isso não é possível:
Uma
CDATA
seção não tem efeito algum . É por isso que você precisa escreverou similar.
Isso também se aplica aos arquivos XHTML servidos como
text/html
. (Como o IE não suporta tipos de conteúdo XML, isso ocorre principalmente).XML
No XML, regras diferentes se aplicam. Observe que navegadores (não IE) usam apenas um analisador XML se o documento XHMTL for servido com um tipo de conteúdo XML.
Para o analisador XML, uma
script
marca não é melhor que qualquer outra marca. Particularmente, um nó de script pode conter nós filhos que não são de texto, acionados por "<
"; e um&
sinal " " indica uma entidade de caractere.Portanto, em XHTML, isso não é possível:
Para contornar isso, você pode agrupar o script inteiro em uma
CDATA
seção. Isso diz ao analisador: 'Nesta seção, não trate "<
" e "&
" como caracteres de controle .' Para impedir que o mecanismo JavaScript interprete as marcas "<![CDATA[
" e "]]>
", você pode agrupá-las nos comentários.Se o seu script não contiver "
<
" ou "&
", você não precisará de umaCDATA
seção.fonte
</
tag de script interna é ruim.<script>var b = "<b>bold</b>";</script>
falha na validação, mas depois de ler sua resposta e mudar para<script>var b = "<b>bold<\/b>";</script>
corrigi-la.Basicamente, é para permitir escrever um documento que seja XHTML e HTML. O problema é que, dentro de XHTML, o analisador XML interpretará os caracteres &, <,> na tag de script e causará erro de análise XML. Então, você pode escrever seu JavaScript com entidades, por exemplo:
Mas isso é impraticável. O maior problema é que, se você ler a página em HTML, o script da tag será considerado CDATA 'por padrão' e esse JavaScript não será executado. Portanto, se você deseja que a mesma página esteja OK, usando os analisadores XHTML e HTML, é necessário incluir a tag de script no elemento CDATA em XHTML, mas NÃO em HTML.
Este truque marca o início de um elemento CDATA como um comentário JavaScript; em HTML, o analisador JavaScript ignora a tag CDATA (é um comentário). No XHTML, o analisador XML (que é executado antes do JavaScript) o detecta e trata o restante até o final do CDATA como CDATA.
fonte
É uma coisa de X (HT) ML. Quando você usa símbolos como
<
e>
dentro do JavaScript, por exemplo, para comparar dois números inteiros, isso teria que ser analisado como XML, assim eles seriam marcados como o início ou o fim de uma tag.O CDATA significa que as seguintes linhas (tudo até o momento
]]>
não é XML e, portanto, não devem ser analisadas dessa maneira.fonte
Você não usar CDATA em HTML4, mas você deve usar CDATA em XHTML e deve usar CDATA em XML se você tiver símbolos unescaped como <e>.
fonte
É para garantir que a validação XHTML funcione corretamente quando você tiver JavaScript incorporado em sua página, em vez de fazer referência externa.
O XHTML exige que sua página esteja em conformidade estrita com os requisitos de marcação XML. Como o JavaScript pode conter caracteres com significado especial, você deve agrupá-lo no CDATA para garantir que a validação não o sinalize como malformado.
Você pode aprender mais sobre CDATA aqui e mais sobre XHTML aqui .
fonte
CDATA indica que o conteúdo dentro não é XML.
Aqui está uma explicação na wikipedia
fonte
Quando você deseja uma conformidade estrita com XHTML, precisa do CDATA, para que menos e comercial não sejam sinalizados como caracteres inválidos.
fonte
para evitar erros de xml durante a validação de xhtml.
fonte
O CDATA diz ao navegador para exibir o texto como está e não para processá-lo como um HTML.
fonte
CDATA indica que o conteúdo dentro não é XML.
fonte
CDATA é necessário em qualquer dialeto XML, porque o texto em um nó XML é tratado como um elemento filho antes de ser avaliado como JavaScript. Essa também é a razão pela qual o JSLint reclama do
<
personagem nas regexes.Referências
fonte
Quando você deseja validar (em XML / XHTML - obrigado, Loren Segal ).
fonte
Dessa forma, o navegador mais antigo não analisa o código Javascript e a página não quebra.
Compatibilidade com versões anteriores. Tem que amar isto.
fonte