2009-09-29 15 views
6

Se ho un tag span come questo:

<span>Hi<br />SecondLine</span> 

E io chiamo questa funzione jQuery:

var html = $('span').html(); 

html è impostata su:

Hi<br>SecondLine 

Ora, mi rendo conto il nome della funzione è html() e non xhtml(). Ma questo comportamento atteso? Posso contare su di esso, o devo sempre puntuale bisogno di verificare la presenza di un tag XHTML br e un tag br html, nel dire, questo esempio:

function br2nl(text) { 
    return text.replace(/<br \/>/gi, '\n').replace(/<br>/gi, '\n'); 
} 
+2

Il documento è probabilmente gestito come HTML e non come XHTML. – Gumbo

+0

Aggiunta la clausola insensitve del caso a regex da quando Firefox restituisce lettere minuscole e IE restituisce lettere maiuscole – slolife

risposta

9

E non lo fa. Modifica solo il DOM del browser.

Spetta al browser serializzare il DOM in HTML o XHTML come desidera quando si utilizza innerHTML. I diversi browser agiscono in modo diverso.

3

Tutti i browser normalizzano il codice HTML mentre creano il loro albero DOM. Quindi, javascript ottiene l'accesso a DOM già normalizzati. Con tutti i tag correttamente chiusi e così via.