[JS] innerHTML naar textarea probleem

Pagina: 1
Acties:

  • Dope-E
  • Registratie: Januari 2001
  • Laatst online: 11-07 12:42

Dope-E

The one and only Dope

Topicstarter
Ik ben bezig met een webbased HTML editor, waarbij de body in een Iframe contentEditable is.

Om te schakelen tussen code-view en wysiwyg gebruik ik de volgende functie:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var codeActive = false;
function viewCode(){
    var part1 = '<textarea id="htmlcode" style="width: 100%; height: 99%; border: 0; overflow: visible">';
    var part2 = '</textarea>';
    if(codeActive){
        editpage.document.body.innerHTML = editpage.document.getElementById('htmlcode').value;
        editpage.document.body.contentEditable = true;
        MM_swapImage('code','','images/code_over.gif',1);
        codeActive = false;
    }
    else{
        editpage.document.body.innerText = editpage.document.body.innerHTML;
        editpage.document.body.innerHTML = part1+editpage.document.body.innerHTML+part2;
        editpage.document.body.contentEditable = false;
        MM_swapImage('code','','images/code_down.gif',1);
        codeActive = true;
    }
}

De body wordt dus in codeview in een textarea gezet en bij t terugschakelen verdwijnt de textarea en wordt die inhoud weer de body. Duidelijk? ;)

Het probleem is nu dat als er bijvoorbeeld een tabel in de pagina is toegevoegd er automatisch <br> achter bijna elke tag verschijnt wanneer je naar codeview omschakelt. Dit is niet de bedoeling! Schakel je nog een keer dan gebeurt t weer, waardoor er nog meer <br>'en bij komen. :(

Iemand enig idee hoe dit te verhelpen is? Alle <br>'en verwijderen is geen optie, want bestaande <br>'en moeten er wel in blijven natuurlijk.

twitter.com/curly_sanders


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 19-08 22:14

Bosmonster

*zucht*

Je kopieert html met nieuwe enters naar je contenteditable iframe. Probeer eens de volgende dingen:

- Zet designmode uit, verander innerHTML en zet designMode weer aan op de iframe
- Doe even een replace op de code die je wegschrijft en verwijder alle \n's :)

  • Dope-E
  • Registratie: Januari 2001
  • Laatst online: 11-07 12:42

Dope-E

The one and only Dope

Topicstarter
Thx Bosmonster, maar ik heb t anders opgelost:
JavaScript:
1
editpage.document.body.innerText = editpage.document.body.innerHTML;

Deze regel was nogal overbodig en zorge ook voor die extra linebreaks :)

twitter.com/curly_sanders