Ik ben begonnen met het maken van mijn eigen mini-wysiwyg editor in javascript. Ik maak gebruik van een iFrame in designMode.
Nou wil ik mijn eigen HTML kunnen invoegen. Als voorbeeldje (toevallig het eerste waar ik tegenaanliep) vang ik drukken op de Enter toets af, en voeg ik dan op de cursor een line break in. Dit omdat IE anders een nieuwe paragraaf begint, en dat wil ik niet. Het relevante stukje code:
IE en FF hebben zoals je ziet ieder hun eigen functie.
Beide functies werken tot op zekere hoogte. De cursor komt nog niet op de goede plaats terecht, maar dat fix ik nog wel. Update: dit lukt me ook niet.
Ik zou graag voor beide browsers gewoon dezelfde oplossing gebruiken (html tekst plakken óf nodes maken), maar ik kom er niet uit. De enige workaround die ik heb gevonden is heel lelijk (komt neer op een random string inserten met execCommand en die dan vervangen).
edit: inmiddels hier:Verwijderd in "[JS - HTML] WYSIWYG - editor" een mooie functie gevonden.
Nou wil ik mijn eigen HTML kunnen invoegen. Als voorbeeldje (toevallig het eerste waar ik tegenaanliep) vang ik drukken op de Enter toets af, en voeg ik dan op de cursor een line break in. Dit omdat IE anders een nieuwe paragraaf begint, en dat wil ik niet. Het relevante stukje code:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| function handlekeysIE() { var e = document.frames["editorframe"].event; if (e.keyCode == 13) { var selRange = editor.selection.createRange(); selRange.pasteHTML("<br>"); return false; } } function handlekeysFF(e) { if (e.keyCode == 13) { var selRange = document.getElementById("editorframe").contentWindow.getSelection().getRangeAt(0); var newnode = document.createElement('br'); selRange.insertNode(newnode); e.preventDefault(); } } |
IE en FF hebben zoals je ziet ieder hun eigen functie.
Beide functies werken tot op zekere hoogte. De cursor komt nog niet op de goede plaats terecht, maar dat fix ik nog wel. Update: dit lukt me ook niet.
Ik zou graag voor beide browsers gewoon dezelfde oplossing gebruiken (html tekst plakken óf nodes maken), maar ik kom er niet uit. De enige workaround die ik heb gevonden is heel lelijk (komt neer op een random string inserten met execCommand en die dan vervangen).
edit: inmiddels hier:Verwijderd in "[JS - HTML] WYSIWYG - editor" een mooie functie gevonden.
[ Voor 54% gewijzigd door Bozozo op 12-01-2008 18:15 ]