Jag använder mig av en webbaserad htmleditor för att kunna skriva htmlformaterad epost och skicka iväg. Själva funktionen för att maila körs i JSP, javamail API.
Mitt problem är att visa data från databas tillbaka till htmleditorn. Det fungerar bra att lagra html i en formulärkontroll och sedan lagra i en databas, men tvärtom funkar det inte så bra, bara om man inte radbryter eller använder för många <>.
Det låter som du inte kodar html-datat innan du visar det i webbläsaren. Skall du lägga "</textarea>" i en textarea måste webbläsaren få <textarea></textarea></textarea>.
Japp, med största sannolikhet är det just det problemet som jag nyss nämnde. Titta på detta exempel;
<script type="text/javascript">
IView.document.body.innerHTML = "<script type="text/javascript">enfunction(){ alert("Hello World");}</script>... lite mer html";
</script>
Exemplet skulle alltså kunna vara data som kommer från din databas om du laddar det direkt utan att koda det. Detta kommer givetvis inte att fungera. Dels innehåller variabel_med_data_från_db " som är samma som sträng-termineringen. Dessa måste bytas ut mot \" innan de skickas till webbläsaren. Eftersom strängen även innehåller </script> kommer webbläsaren att tro att här slutar script-blocket (mitt i en oavslutad sträng). Alltså måste < och > ersättas med < och > Finns det sedan radbrytningar i strängen måste dessa ersättas med \n och finns det "\" måste de allra först ersättas med "\\". Allt detta måste alltså göras på serversidan efter det att du hämtat datat från databasen och innan du skickar det till webbläsaren.
Jag tror att jag har kommit på det.
Så fort jag har en radbrytning i databasen så funkar det inte. Men lägger jag all HTMLkod på samma rad i db så funkar det!
"\n" representerar en radbrytning i koden. Skall du ha en radbrytning på sidan som visas använder du html-taggen "<br>". En radbrytning i html är en s.k. white-space liksom mellanslag och kan därför ersättas med en annan white-space (ex. mellanslag). Enda anledningen till att du använder radbrytningar i "html-kod" är för att det skall bli enklare att läsa koden. Sidan ser likadan ut oavsett.
Således, skall du lägga in följande html-kod i en javascript-variabel;
<p>
Hello
"world"
<br/>
I can do this
</p>
Blir det:
variabel="&lt;p&gt;\nHello\n\"world\"\n&lt;br/&gt;\nI can do this\n&lt;/p&gt;";