salve raga, premetto che non voglio fare un nuovo editor tipo fckeditor o simili in javascript,
ma volevo un aiuto sulla logica di come funzionano.
Mi spiego meglio:
poniamo che io abbia la frase dentro l'area editabile di uno di questi editor:
"ciao mamma! guarda come mi diverto!"
a questo punto seleziono la parte di frase
"guarda come mi diverto!"
clicco su bold e ottengo
"ciao mamma! guarda come mi diverto!"
vuol dire che ho preso la mia selezione "guarda come mi diverto!" e l'ho sostituita con
"guarda come mi diverto!" e d ho quindi aggiunto il tag bold all'inizio e la chiusura
del bold alla fine.
Fin qui tutto chiaro e anche abbastanza semplice da realizzare è un semplice replace
della stringa selezionata.
Adesso la parte difficile:
seleziono "come mi" e riclicco sul tasto bold dovrei così ottenere:
"ciao mamma! guarda come mi diverto!"
come si fa? ho ipotizzato un uso abbastanza peso delle espressioni regolari!
cioè:
1) prendo la parte precedente alla mia selezione, e controllo se c'è un tab bold aperto
e non chiuso, se c'è e ci sono dei testi dopo il tag bold aperto prima della
mia selezione chiudo il tag immediatamente prima della mia selezione, nel mio
caso "guarda" diventa "guarda
Se invece non ci sono testi prima tolgo il tag bold aperto.
2) prendo la parte successiva alla mia selezione e guardo se trovo un tag bold
chiuso senza che prima ci sia un tag bold aperto con del testo precedete al tag,
nel mio caso trovo "diverto!"
se c'è mettò subito dopo alla mia selezione un tag bold aperto e quindi diviene
"diverto!". Se trovo il tag bold chiuso senza testo precedente lo rimuovo.
Secondo voi la logica è questa? esiste un metodo + semplice?
Altra domanda molto + pesa:
come faccio a distinguere il testo dai tag.
mi spiego meglio se al punto 2 prima del tag bold chiuso avessi trovato
un tag di paragrafo chiuso "</p>" o qualsiasi altro tipo di tag come facevo
a capire che non era testo ma un tag? perchè se è un tag e non un testo
non dovevo piazzare il tag bold aperto "</p>" ma rimuovere il tag
bold chiuso e ottenere "</p>" !!!![]()
![]()