Ik las net een topic hiero over een wysiwyg gevalletje in JS. Ik wou zelf ook even zoiets gaan maken, voor de lol, maar loop nu tegen een probleempje aan.
1)
Namelijk wil ik graag bij het vet maken van een (gedeelte van) een woord switchen tussen vet en originele staat van de tekst.
In het ergste geval krijg je dus zo'n tekstje:
"een lastige zin vind ik"
Vervolgens selecteerde user "een lastige zin" en drukt op 'vet'.
Nu zijn er 2 mogelijke resultaten:
Zoals je ziet kan ik de tekst wel bold maken, maar hoe kan ik nou zien wanneer de tekst al bold IS en ik deze terug moet veranderen? De 'text' attribute geeft namelijk geen html tags mee. (Dat is dus prob 1)
2)
Probleem 2 is, dat ik graag wil controleren of er DIRECT (afgezien van whitespace) voor of na de selectie al een 'element' staat. (Om daar de eigenschappen aan te hangen ipv een extra element creeeren).
1)
Namelijk wil ik graag bij het vet maken van een (gedeelte van) een woord switchen tussen vet en originele staat van de tekst.
In het ergste geval krijg je dus zo'n tekstje:
"een lastige zin vind ik"
Vervolgens selecteerde user "een lastige zin" en drukt op 'vet'.
Nu zijn er 2 mogelijke resultaten:
- een lastige zin vind ik"
- een lastige zin vind ik"
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| function fnDoSelectAct()
{
objSelection = document.frames['elContentEdit'].document.selection;
if (objSelection)
objSelection = objSelection.createRange();
objSelection.text.doFormat('b');
}
String.prototype.doFormat = function(strType)
{
switch(strType)
{
case 'b':
this.pasteHTML('<b>' + this + '</b>');
break;
}
} |
Zoals je ziet kan ik de tekst wel bold maken, maar hoe kan ik nou zien wanneer de tekst al bold IS en ik deze terug moet veranderen? De 'text' attribute geeft namelijk geen html tags mee. (Dat is dus prob 1)
2)
Probleem 2 is, dat ik graag wil controleren of er DIRECT (afgezien van whitespace) voor of na de selectie al een 'element' staat. (Om daar de eigenschappen aan te hangen ipv een extra element creeeren).