conforme o título; é possível ter comentários aninhados em HTML válido? veja o exemplo abaixo ...
<p>some text</p>
<!-- comment 1
<p>commented out html</p>
<!-- comment 2
// are nested html comment allowed?
end of comment 2 -->
<p>more commented out html</p>
end of comment 1 -->
<p>some more text</p>
Parece que não. Alguém sabe como posso fazer com que os comentários aninhados funcionem?
html
validation
comments
QAZ
fonte
fonte
Respostas:
Ao aninhar um comentário, substitua "-" por "- -". Ao retirar o aninhamento, inverta o procedimento. Não é o
<!--
que é proibido, mas o--
.Exemplo:
fonte
--
por- -
para o comentário interno (aninhado) .TL; DR : Infelizmente, não, não é possível (e nunca será).
Resposta curta:
Um comentário HTML não é exatamente o que muitos pensam que é. HTML é uma forma de SGML, em que os comentários são delimitados por pares de travessões duplos ( --... -- ).
Portanto, qualquer par de traços duplos dentro de um par de colchetes angulares com um ponto de exclamação após o colchete de abertura ( <! --⋯ -- >) é um comentário. A especificação diz isso melhor do que eu: http://www.w3.org/TR/html4/intro/sgmltut.html#h-3.2.4
É por isso que comentários como este (que temos tudo provável feito uma vez ou outra) são uma má ideia:
Verdade: tenho preguiça de dizer quantos comentários são representados pela poluição da tag acima, mas são pelo menos 10.
Claro, não é tão simples, devido às diferenças em como cada navegador escolhe interpretar as especificações.
Aqui está um excelente artigo que explica isso:
http://weblog.200ok.com.au/2008/01/dashing-into-trouble-why-html-comments.html
Resposta longa: por que erramos
A maioria de nós que cresceu com HTML (sem mergulhar no SGML que está por trás disso) passou a acreditar que a string <!-- começa com um comentário e a string -->termina com um comentário.
Na verdade, <!e >delimite uma declaração SGML dentro de seu documento HTML, como a declaração DOCTYPE que todos vimos no topo de nossas páginas. Dentro uma declaração SGML, os comentários são delimitados por travessões duplos. Assim, o comentário HTML
que a maioria de nós acreditaria que é analisado assim, <!-- this is a comment -->na verdade é analisado assim:
<!-- this is a comment --> . É uma declaração SGML vazia, exceto por um comentário.
Porque HTML é uma forma de SGML, este "comentário dentro de uma declaração" funciona como um comentário HTML.
Sem interesse, aqui está um pedaço de SGML puro que mostra os comentários funcionando como pretendidos no SGML: esta definição de lista de atributos contém um comentário em cada linha:
fonte
Isso não pode ser feito.
-->
sempre encerrará um comentário HTML existente.fonte
Se você estiver realmente preso a algum pedaço de HTML - pré-renderizado em alguma fonte incontrolável - que contém comentários, e você precisa ter certeza de que nenhum deles seja renderizado em sua página, você sempre pode envolvê-lo com uma
script
tag como a abaixo, a única coisa é que você não pode comentar asscript
tags dessa maneira.Se você precisar comentar as
script
tags, você pode usar umtextarea
como wrapper; é claro, fazendo isso dessa forma, você não pode comentar astextarea
tags.fonte
/* */
Use
template
tag. A maneira mais rápida de bloquear a exibição de todos os comentários e outros html.fonte
<template>
elemento não pode ser adicionado em qualquer lugar. Seu elemento pai deve ser o<body>
elemento ou alguns outros selecionados .Alguns editores possuem comandos para comentar / descomentar que podem tratar automaticamente os comentários existentes em um bloco de texto. O Visual Studio, por exemplo, faz isso quando você pressiona Ctrl + KC e Ctrl + KU.
fonte
Um suplemento do VS que simula comentários aninhados é convertido automaticamente
<!--...-->
em<!~~...~~>
comentários de toda a seção. Ele permite que você ligue e desligue.comentários aninhados
fonte
Acho que não é permitido, mas pelo que sei funciona na maioria dos principais navegadores, exceto no Firefox.
fonte
tente usar isso
este é o começo do comentário
-->
fim dos comentários.fonte
Tente isto
fonte
<comment>
palavra - chave em HTML