2012-08-04 13 views
18

Per esempio, se abbiamoPerché la proprietà DOM di .tagName restituisce un valore maiuscolo?

<html> 
    <head> 
     <title>FooBar</title> 
    </head> 
    <body></body> 
</html> 

Se lo facciamo document.getElementByTagName("title").TagName, allora avremo TITLE (maiuscolo). Mentre gli standard html raccomandano di scrivere tag html in lettere minuscole.

So che non esiste alcuna relazione tra entrambi, ma questo non ha ancora senso.

C'è qualche ragione per cui DOM deve restituire i nomi dei tag in maiuscolo?

+1

Si può citare lo standard HTML che consiglia le lettere minuscole? –

+0

Oh, mi sono appena reso conto che 'xhtml' è lo standard che richiede che i tag siano in minuscolo, ma questo non fa differenza, credo. –

risposta

27

Tecnicamente, questo ha il mandato in DOM Level 1:

Il DOM HTML restituisce il tagName di un elemento HTML in forma canonica maiuscolo, a prescindere dal caso nel documento sorgente HTML.

La convenzione dei nomi di tag maiuscoli deriva probabilmente dal precedente, quando HTML era stato precedentemente sviluppato in base a SGML e i tipi di elemento erano dichiarati in maiuscolo. Vedere this section of the HTML 4.01 spec discussing SGML, HTML and its syntax, nonché ad esempio the HTML 4.01 Strict doctype definition. Le implementazioni DOM che supportano l'HTML seguiranno l'esempio.

Si noti che i nomi di tag in lettere minuscole sono solo esplicitamente richiesti in XHTML (ma non in XML) e in genere si consiglia agli autori di scrivere tag in caratteri minuscoli per facilitare il porting tra HTML/XHTML e migliorare la leggibilità. Tuttavia, questa raccomandazione non si verifica nelle specifiche; tutto ciò che dice è che i nomi dei tag non fanno distinzione tra maiuscole e minuscole solo in HTML rispetto a XHTML e XML.

+1

Esistono casi in cui i principali browser (o versioni di essi) non rispettano questa regola e restituiscono valori minuscoli in una chiamata a 'nodeName', a causa di un bug o altrimenti? – RTF