Há algo de errado em colocar comentários em uma tag de fechamento HTML?

4

Costumo escrever comentários como este

<div id="wrapper">
...
</div> <!-- id="wrapper" -->

Mas e se eu os escrevesse assim?

<div id="wrapper">
...
</div id="wrapper">

A princípio, parece perigoso colocar um atributo id que tenha o mesmo valor em outra tag, mas, então, o navegador não elimina essa informação? Até onde eu posso ver, o Chrome e o Firefox desconsideram qualquer "atributo" na tag de fechamento.

Também parece lamentável que não seja um comentário real. Não será analisado semanticamente como um comentário. Mas eu não acho que alguém esteja usando esse espaço para mais nada, certo? Fechar tags apenas fechar, certo?

Existe alguma razão para não fazer isso além de não ser um padrão?

    
por fet 21.09.2015 / 06:51
fonte

2 respostas

10

Este cenário não é abordado na especificação: link

Além disso, a próxima seção da especificação (Attributes) afirma que os atributos devem estar nas tags de início.

Como sua proposta não respeita as especificações, é altamente recomendável não aderir a ela.

    
por 21.09.2015 / 08:23
fonte
6

Junto com a seção do padrão HTML que define a sintaxe de uma tag final válida , conforme citado em outra resposta a essa pergunta , o HTML Standard também define a presença de atributos em end tags como um erro de análise que analisadores de relatórios de erros deve relatar.

Veja o início da seção Tokenization do algoritmo de análise de HTML , que diz:

When an end tag token is emitted with attributes, that is a parse error

(Note que a palavra emitida aqui significa no produto da fase de tokenização, que emite tokens que são então consumidos pelo Fase Construção da árvore .

Também no espírito de ter um registro de informações disponíveis no ponto de uso aqui no StackOverflow, quando possível - em vez de exigir que os usuários sigam os links para obter as informações - aqui estão os detalhes do seção do padrão HTML que define a sintaxe da tag final válida :

  1. The first character of an end tag must be a U+003C LESS-THAN SIGN character (<).
  2. The second character of an end tag must be a U+002F SOLIDUS character (/).
  3. The next few characters of an end tag must be the element's tag name.
  4. After the tag name, there may be one or more space characters.
  5. Finally, end tags must be closed by a U+003E GREATER-THAN SIGN character (>).

Um pouco interessante, isso permite que tags finais como </body > contenham espaços em branco, e também coisas assim:

  <a href=foo>prefix-</a
  ><i>something following w/o space between, on a separate line for readability</i>
    
por 22.09.2015 / 07:05
fonte