2011-11-01 11 views
47

Per esempio:È OK usare un tag DIV a chiusura automatica?

<div id="myDiv" /> 

qualcosa sarebbe poi essere fatto per popolare questo div utilizzando Javascript.

È questo codice HTML valido?

+1

Onestamente direi di no. Sento che solo alcuni tag possono essere chiusi automaticamente in xhtml. Questi compresi


, , . Se funziona, allora sentiti libero di usarlo. –

risposta

36

No. HTML 4.x non ha alcun concetto di tag di chiusura automatica.

È valido in XHTML.

+1

Questo è corretto - anche, per quelli di noi che utilizzano AngularJS o framework simili, un DIV a chiusura automatica interromperà l'applicazione in IE8. – Stone

+0

Come si chiamano i tag img, quindi? –

+1

Basta stare attenti all'utilizzo di jquery come A VOLTE CHE non funzionerà correttamente quando si ha un tag a chiusura automatica in un determinato luogo. –

11

I tag div non sono tag di chiusura automatica validi. Per avere un div vuoto che sarebbe stato meglio fare questo:

<div id="myDiv"></div> 
0

No, è XML valido (non HTML), e per quanto ne so, accettati solo se il documento viene inviato con un'applicazione/mimetipo xml.

Tuttavia, potrebbe funzionare con XHTML e la dichiarazione Doctype XHTML.

9

In base alla dichiarazione XML e alle definizioni di documento XHTML 1.0 e 1.1, ciò va bene: il tag null-end (>) può essere utilizzato quando si segue immediatamente il tag di inizio null fine (/) e il codice è equivalente a <div id="myDiv"></div>.

È completamente diverso se un particolare utente sarà in grado di elaborarlo correttamente.

La dichiarazione SGML utilizzata da HTML 4.01 consente la riduzione dei tag, ma ha una sintassi diversa per i tag null-end; lì puoi scrivere <div id="abc"/this is a non-empty div/. Ancora una volta, il chilometraggio può variare come per il supporto del browser. (I miei soldi sono su "nessuno".)

Le future versioni di HTML (HTML5? Se quel nome è ancora attivo) non sono più implementate come linguaggi SGML e quindi consentono semplicemente quello che dicono di fare, senza ricorrere a una grammatica formale.

+3

+1 per ulteriori dettagli. Forse un link corrispondente sarebbe utile ^.^ –

+1

@Howdy_McGee: Controlla il W3C, hanno i DTD e le (versioni multiple della dichiarazione SGML per HTML 4.01, e anche la dichiarazione SGML (obbligatoria) per XML. Su Linux, guarda in/usr/share/xml' e '/ usr/share/sgml'. –

1

ho eseguito questi due blocchi di codice attraverso il W3C validator. Copia e incolla il codice nell'input sotto la scheda Convalida per immissione diretta per vedere i risultati.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
    <head> 
    <title>title</title> 
    <meta http-equiv="content-type" content="text/html;charset=UTF-8" > 
    </head> 
    <body><div id="Mydiv" /></body> 
</html> 

Il blocco di codice con Doctype di HTML 4.01 transitorio non ha superato il processo di convalida.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" lang="en"> 
    <head> 
    <title>Test</title> 
    <meta http-equiv="content-type" content="text/html;charset=UTF-8" /> 
    </head> 
    <body><div id="Mydiv" /></body> 
</html> 

Quando ho aggiunto il doctype transizione XHTML 1.0, ha cambiato il meta tag per un tag di chiusura di sé, e ha aggiunto nella linea xmlns html, la convalida passato.

Quindi per rispondere alla prima metà della domanda, è valido HTML sotto il doctype Transitional XHTML 1.0. Se non si può usare javascript per popolarlo correttamente, non sono sicuro.

Problemi correlati