Quais são todos os elementos de fecho automático válidas em XHTML (conforme implementado pelos principais navegadores)?

StackOverflow https://stackoverflow.com/questions/97522

Pergunta

O que são todos os elementos de fecho automático válidos (por exemplo
) em XHTML (conforme implementado pelos principais navegadores)?

Eu sei que XHTML tecnicamente permite que qualquer elemento a ser auto-fechado, mas eu estou procurando uma lista dos elementos suportados por todos os principais navegadores. Consulte http://dusan.fora.si/blog/self-closing-tags para exemplos de alguns problemas causados ??por elementos auto-fechamento, como

.

Foi útil?

Solução

Cada navegador que suporte XHTML (Firefox, Opera, Safari, IE9 ) suporta a sintaxe de fechamento automático em cada elemento .

<div/>, <script/>, <br></br> tudo deve funcionar muito bem. Se não o fizerem, então você tem HTML com inadequadamente acrescentou XHTML DOCTYPE.

DOCTYPE não muda como documento é interpretada. Apenas tipo MIME faz .

W3C decisão sobre ignorar DOCTYPE :

O GT HTML discutiu esta questão: a intenção era permitir velho (HTML somente) navegadores para aceitar XHTML 1.0 documentos seguindo o diretrizes, e servindo-os como text / html. Portanto, os documentos serviu como text / html deve ser tratado como HTML e não como XHTML.

É uma armadilha muito comum, porque W3C Validador ignora essa regra, mas navegadores segui-lo religiosamente. Ler Entendimento HTML, XML e XHTML do blog WebKit:

Na verdade, a grande maioria dos documentos supostamente XHTML na internet são servidos como text/html. Que significa que eles não são XHTML em tudo, mas HTML realmente inválido que está ficando por sobre o tratamento de erros de HTML analisadores. Todos aqueles “XHTML 1.0!” links da web realmente estão dizendo “Invalid HTML 4.01!”.


Para testar se você tem XHTML real ou inválido HTML com DOCTYPE do XHTML, colocar isso em seu documento:

<span style="color:green"><span style="color:red"/> 
 If it's red, it's HTML. Green is XHTML.
</span>

É valida, e em XHTML real ela funciona perfeitamente (ver: 1 vs 2 ). Se você não pode acreditar em seus olhos (ou não sabe como definir tipos MIME), abrir a página de proxy via XHTML .

Outra maneira de verificar é vista de origem no Firefox. Ela irá destacar barras no vermelho quando eles estão inválido.

Em HTML5 / XHTML5 isso não mudou, ea distinção é ainda mais claro, porque você não tem sequer DOCTYPE adicional. Content-Type é o rei.


Para o registro, a especificação XHTML permite que qualquer elemento a ser auto-fechamento, fazendo XHTML um XML aplicação : [grifo meu]

tag de elemento vazio pode ser utilizado para qualquer elemento que não tem conteúdo , se é ou não é declarado usando a palavra-chave vazio.

Ele também é mostrado explicitamente na XHTML especificação :

elementos vazios devem qualquer tem uma marca de fim ou a tag de início deve terminar com />. Por exemplo, <br/> ou <hr></hr>

Outras dicas

Um elemento que ter muito cuidado com sobre este tema é a <script> elemento. Se você tem um arquivo de origem externa, que irá causar problemas quando você auto fechá-lo. Experimente:

<!-- this will not consistently work in all browsers! -->
<script type="text/javascript" src="external.js" />

Isto irá funcionar no Firefox, mas quebras no IE6 pelo menos. Eu sei, porque eu corri para este quando a auto excesso de zelo fechando cada elemento vi; -)

A sintaxe de fecho automático funciona em todos os elementos em application / xhtml + xml. Não é suportado em qualquer elemento em text / html, mas os elementos que são “vazias” em HTML4 ou “vazio” em HTML5 não tomar uma tag final de qualquer maneira, por isso, se você colocar uma barra sobre aqueles parece que a sintaxe de fecho automático foram apoiados.

A partir da W3 Escolas site de referência :

<area />
<base />
<basefont />
<br />
<hr />
<input />
<img />
<link />
<meta />

melhor pergunta seria: o que as tags podem ser auto-fechado mesmo no modo HTML sem afetar código? Resposta: apenas aqueles que possuem um conteúdo vazio (são nulas). De acordo com a HTML especificações o seguinte elementos são nulos:

area, base, br, col, embed, hr, img, input, keygen, link, menuitem, meta, param, source, track, wbr

command versão mais antiga do especificação também listados. Além disso, de acordo com várias fontes as seguintes tags obsoletos ou não-padrão são nulos:

basefont, bgsound, frame, isindex

Espero que isso ajude alguém:

<base />
<basefont />
<frame />
<link />
<meta />

<area />
<br />
<col />
<hr />
<img />
<input />
<param />

E sobre <meta> e <link>? Por que não estão nessa lista?

regra rápida, não se auto-fechar qualquer elemento que se destina a ter conteúdo, porque ele vai certamente causar problemas navegador mais cedo ou mais tarde.

Os que são naturalmente auto-fechamento, como <br> e <img>, deveria ser óbvio. Os que não são ... apenas não se auto-fecha-los!

A última vez que verifiquei, os seguintes foram os elementos vazios / void listados em HTML5.

Válido para autores: área, base, br, col, comando, incorporar, EventSource, hr, img, entrada, link, meta, param, fonte

inválido para autores: basefont, BGSOUND, quadro, espaçador, wbr

Além dos poucos que são novos no HTML5, que deve lhe dar uma idéia de aqueles que podem ser apoiadas ao servir XHTML como text / html. (Apenas testá-los através da análise do DOM produzido.)

Quanto XHTML servido como application / xhtml + xml (que torna XML), regras XML aplicar e qualquer elemento pode estar vazio (mesmo que o XHTML DTD não podem expressar isso).

Você deve ter um olhar a xHTML DTDs , eles estão todos listados . Aqui está uma rápida revisão todos os principais:

<br />
<hr />
<img />
<input />

Eles são chamados de elementos "vazio" em HTML 5. Eles estão listados na W3 oficial especificação .

Um elemento vazio é um elemento cujo modelo de conteúdo não lhe permite ter conteúdos sob quaisquer circunstâncias.

A partir de abril de 2013, que são:

área, base, Br, Cl, comando, incorporar, hr, img, entrada, keygen, ligação, meta, param, fonte, pista, WBR

Em dezembro de 2018 (HTML 5.2), são:

área, base, Br, Cl, incorporar, hr, img, entrada, ligação, meta, param, fonte, pista, WBR

Outra fechamento problema tag auto para o IE é o elemento título. Quando IE (só tentei no IE7) vê isso, ele apresenta ao utilizador uma página em branco. No entanto, você "view source" e está tudo lá.

<title/>

Inicialmente eu vi isso quando meu XSLT gerado a tag de fecho automático.

Eu não estou indo para tentar overelaborate sobre isso, especialmente desde que a maioria das páginas que eu escrevo ou são gerados ou a tag tem conteúdo. Os dois únicos que já me deu problemas quando tornando-os auto-fechamento são:

<title/>

Por isso, eu simplesmente ter recorrido a sempre dando-lhe uma marca de fechamento separado, uma vez que uma vez que está lá em cima na <head></head> ele realmente não se tornar seu código qualquer Messier para trabalhar com qualquer maneira.

<script/>

Este é o grande problema que eu muito recentemente teve problemas com. Por anos eu sempre tinha usado etiquetas <script/> de fecho automático quando o script é proveniente de uma fonte externa. Mas eu muito recentemente começou recebendo mensagens de erro JavaScript sobre uma forma nula. Após vários dias de pesquisa, descobri que o problema era (supostamente) que o navegador nunca se chegar ao tag <form> porque não sabia que este era o fim da tag <script/>. Então, quando eu fiz isso em tags <script></script> separadas, tudo funcionou. Por diferentes em diferentes páginas que fiz no mesmo navegador, eu não sei, mas foi um grande alívio para encontrar a solução!


é outra

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top