Per ora ho trovato 2 soluzioni parzialmente adatte al quesito.
(Le posto solo nella remota e disattesa possibilità che torni utile a qualcuno, in futuro).
1. Prima soluzione, un prompt:
codice:
<SCRIPT Language="Javascript">
function addtitle() {
a = html_text.document.body.innerHTML;
b = prompt('Inserisci il titolo del paragrafo', 'Titolo');
c = a + "<DIV CLASS=\"titolo\">" + b + "</DIV>Scrivi qui il testo";
html_text.document.body.innerHTML = c;
}
</SCRIPT>
Associato all'input HTML:
<INPUT TYPE="BUTTON" onclick="addtitle()" VALUE="titolo">
Questa soluzione chiede in un prompt il titolo cui associare la classe CSS "titolo", lo formatta con i layer DIV e lo attacca in fondo al testo già inserito dell'IFRAME.
Carenza: l'inserimento del titolo non viene effettuato nella parte selezionata del testo dell'IFRAME, ma in fondo. Però è spostabile in una riga vuota superiore con il copia/incolla.
2. Seconda soluzione, utilizzo di reg exp:
codice:
<SCRIPT Language="Javascript">
function preclass() {
var n_reg = html_text.document.body.innerHTML;
if (document.all)
{ re=/<FONT color=#090909>/;
n_reg = n_reg.replace(re,"<DIV CLASS=\"titolo\">");
re=/<\/FONT>/;
n_reg = n_reg.replace(re,"</DIV>");
re=/<FONT color=#080808>/;
n_reg = n_reg.replace(re,"<DIV CLASS=\"corpo\">");
re=/<\/FONT>/;
n_reg = n_reg.replace(re,"</DIV>");
html_text.document.body.innerHTML = n_reg;
return;
}
/* Con lo stesso criterio si può fare un replace del contenuto
dell'IFRAME anche per FireFox e altri browser */
}
</SCRIPT>
Controllato dal select box
<SELECT ID="FontColor" onchange="formatC('forecolor',this[this.selectedIndex].value);this.selectedIndex=0;preclass();">
<OPTION SELECTED>Classe</OPTION>
<OPTION VALUE="#080808">titolo</OPTION>
<OPTION VALUE="#090909">corpo</OPTION>
</SELECT>
Questa soluzione formatta normalmente il testo selezionato attraverso la funzione FormatC con il metodo execCommand con 2 colori improbabili, 080808 e 090909 a cui sono associate due classi CSS, rispettivamente titolo e corpo.
Le regular expression che seguono sostituiscono il formatting del primo colore 080808 con il layer di classe "titolo" e il secondo colore 090909 con il layer di classe "corpo".
In questo caso è stata scritta solo per MSIE, ma basta ampliare la funzione con la condizione if (!(document.all)) per fare il replace dell'IFRAME su tag color di altri browser.
Ovviamente questa soluzione va bene nel mio caso dove l'editor non deve avere possibilità di formattazione FONT, pertanto il replace non globale del tag </FONT> non crea problemi di chiusure indesiderate di altre sintassi.
Carenze: soluzione strettamente dipendente dall'output dell'execCommand del browser e alla sintassi di formattazione del browser sul colore.
Il replace delle RegExp deve prevedere tutte le possibili sintassi di formattazione del colore dei browser.
Obsolescenza in caso di upgrade dei browser.
Per Xinod, grazie dei consigli su htmlarea3, proverò a visionarli.
Per Mich_: le tue più che critiche costruttive sono critiche (e mi riferisco anche ad altri thread).