Ik ben bezig om een soort "ultieme" UBB editor te schrijven voor mijn CMS. Enig verschil is, dat mijn editor HTML in plaats van UBB code genereert. Het is dus eigenlijk een HTML editor, maar als ik het zo noem, denkt iedereen meteen aan een WYSIWYG en dat is dus niet wat ik nu maak.
Wat is graag zou willen is detecteren welke tags er om een bepaald woord of selectie heen staan, zodat ik de state van de menu buttons daarop kan aanpassen. Een voorbeeld van wat ik bedoel:

In dit voorbeeld staat mijn cursor op het woord "onderstreept". Dit woord zal zowel vet als onderstreept worden afgedrukt: onderstreept. Ik vraag me af op welke manier ik kan zien dat deze tags er omheen staan, zodat ik de buttons [b] en [u] uit de toolbar, een andere status kan meegeven (hier: rode omlijsting).
Het laatste is makkelijk: als ik weet welke buttons "aan" moeten, verander ik gewoon de class van die button. Ik heb hiervoor al 2 functies geschreven (zit eraan te denken de editor naar OO om te bouwen):
De grote vraag is dus alleen: HOE kan ik uitlezen door welke tags een woord of selectie omvat wordt? De code van de editor staat hier.
Wat is graag zou willen is detecteren welke tags er om een bepaald woord of selectie heen staan, zodat ik de state van de menu buttons daarop kan aanpassen. Een voorbeeld van wat ik bedoel:

In dit voorbeeld staat mijn cursor op het woord "onderstreept". Dit woord zal zowel vet als onderstreept worden afgedrukt: onderstreept. Ik vraag me af op welke manier ik kan zien dat deze tags er omheen staan, zodat ik de buttons [b] en [u] uit de toolbar, een andere status kan meegeven (hier: rode omlijsting).
Het laatste is makkelijk: als ik weet welke buttons "aan" moeten, verander ik gewoon de class van die button. Ik heb hiervoor al 2 functies geschreven (zit eraan te denken de editor naar OO om te bouwen):
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| String.prototype.removeClass = function(theClass) { var regString = "(^| )" + theClass + "\W*"; var regExpression = new RegExp(regString); return this.replace(regExpression, ""); } String.prototype.addClass = function(theClass) { if (this != "") { if (!this.classExists(theClass)) { return this + " " + theClass; } } else { return theClass; } return this; } |
De grote vraag is dus alleen: HOE kan ik uitlezen door welke tags een woord of selectie omvat wordt? De code van de editor staat hier.
[ Voor 3% gewijzigd door Reveller op 19-11-2006 16:07 ]
"Real software engineers work from 9 to 5, because that is the way the job is described in the formal spec. Working late would feel like using an undocumented external procedure."