Newsgroup: it.comp.lang.javascript
Titolo: preserve carriage return in textContent

� possibile preservare i ritorni a capo quando si usa textContent?

 � possibile preservare i ritorni a capo quando si usa textContent?
 
Per quanto ne so li preserva. Puoi fornire del codice specifico dove ci�
non accade?
 

ZER0 ha scritto quanto segue il 27/03/2013 22.04>

Hai ragione.
Mi sono imbattuto in questo problema usando questo 
controllo:
http://nicedit.com/index.php
 
 
nicEditors.findEditor('aa').getElm().textContent
 
mi torna una stringa senza ritorni a capo.
Per� usando un analogo:
 
<div id="aa" contenteditable="true">
 
sono mantenuti.
Mah?

ZER0 ha scritto quanto segue il 27/03/2013 22.04>

son riuscito a riprodurre il problema.
praticamente succede che se ho:
 
<div id="aa" contenteditable="true">
uno
due
tre
</div>
 
 
il textContent funziona.
Ma se scrivo qualcosa andando a capo, tutto quello che aggiungo rimane 
viene invece restituito senza carriage return.
Invece conn innerHTML rimangono i <br>
Si pu� risolvere direttamente, senza usare un regex su innerHTML?

 Si pu� risolvere direttamente, senza usare un regex su innerHTML?
 
Non che io sappia. Un div non � una textarea. Puoi indubbiamente
sostituire i <br> trasformandoli in carriage return, ma il mio consiglio
spassionato � che dovresti evitare il contenteditable come la peste: fa
pi� danni che altro, per farlo funzionare un minimo a dovere bisogna
farci parecchi lavori sopra.

 farci parecchi lavori sopra.
 
Confermo, firmo, sottoscrivo, timbro, vidimo e affranco.
 
Solo che, onestamente, non ho trovato alternative decenti per fare un 
editor "wysiwyg" decente. Eccetto intercettare manualmente ogni evento in 
input e gestirsi tutto a mano.
 
Bye.

 Ovviamente, perch� il content editable*non*  inserisce carriage return.
In effetti ho sbagliato a riportare l'esempio.
L'ho riscritto e ho notato un'altra curiosit�.
Se uso:
 
<div id="bb" contenteditable="true">
uno<br>due<br>tre<br>
</div>
 
il textContent non ritorna gli a capo, mentre se uso:
 
<div id="aa" contenteditable="true">
uno<br>
due<br>
tre<br>
</div>
 
li ritorna. Eppure il codice html � identico cambia solo la formattazione.
Comunque alla fine dei conti dovr� usare una regex, come dice Alessandro 
non mi pare ci siano alternative.
 
 
<html><body>
<div id="aa" contenteditable="true">
uno<br>
due<br>
tre<br>
</div>
<div id="bb" contenteditable="true">
uno<br>due<br>tre<br>
</div>
<div 
onclick="alert(document.getElementById('aa').textContent);alert(document.getElementById('bb').textContent);">CLICCA</div>
</body></html>

 editor "wysiwyg" decente.
 
Questo perché è proprio l'idea alla base del WYSIWYG ad essere malata.
Citando quel che viene ripetuto da decenni nel manifesto goliardico – ma
neanche poi tanto – del "vero programmatore":
 
    In effetti il concetto di WYSIWYG (quello  che
    vedi e' quello che ottieni) si applica ai computer malissimo,
    cosi' come si applica alle donne.
 

 non mi pare ci siano alternative.
 
Dipende da qual � il tuo scopo. Io da tempo ormai ho lasciato perdere
gli editor WYSIWYG, perch� danno pi� problemi che soluzioni.
Dipendentemente dal tipo di editor, comunque, puoi utilizzare componenti
che *non* facciano uso di `contenteditable`. Ad esempio, se stai
realizzando un editor di codice o di formattazione semplice, ci sono un
sacco di componenti di terze parti (ACE, Code Mirror, Orion...).
 

 due: uno prima di "uno", e uno prima di `</div>`.
Anche cos� non convince.
Perch� nell'esempio di prima gli a capo c'erano ma non c'erano i <BR> e 
non preserva gli a capo.
Se c'� solo un
\n o <br>
textContent non preserva gli a capo
mentre textContent ritorna gli a capo se � c'� sia
\n e <br>
strano
segue una via per verificare se c'� un a capo (<BR>) e un'altra per 
tornare l'a capo (\n)
strano

 strano
 
Spero che ora ti sia un po' piú chiaro. Conta ovviamente, che se metti
in ballo `contenteditable`, quello ti sballa tutto l'HTML come hai già
notato.
 

 Questo perché è proprio l'idea alla base del WYSIWYG ad essere malata.
 
Eh, lo so. Ho provato a proporre Markdown al cliente, ma mi ha guardato 
male. :D
 
Bye.

 male. :D
 
Va saputo vendere! :P
Inoltre puoi sempre usare un editor che permetta la formattazione
visuale, ma limitarti appunto al solo markdown, o un subset dello
stesso. In questo modo non hai bisogno del `contenteditable`.