Newsgroup: it.comp.lang.javascript
Titolo: Modifica ad un editor per iserire caratteri speciali

ciao a tutti
siccome ho la necessità di inserire nelle nostre pagine html delle vocali 
accentate e delle consonanti sotto puntate che non sono presenti in 
tastiera, ho modificato questo editor:
http://www.freerichtexteditor.com/
potete vedere la modifica funzionante a questo indirizzo:
http://www.iomla.net/dia.htm
Nella terza toolbar come potete vedere c'è una fila di pulsanti contenenti 
la lettera accentata o sottopintata da inserire.
Questa parte di funzione è la parte della funzione utilizzata da MS IE che 
inserisce il carattere all'intermno del testo.
{
cDoc = document.getElementById(rteName).contentWindow.document;
range=cDoc.selection.createRange();
range.text=str;
cDoc.selection.empty();
cDoc.focus();
}
?
La mia modifica funziona bene con tutti i browser ma con MSIE (microsoft 
internet explorer) se il carattere da inserire deve rimpiazzare uno o più 
caratteri selezionati nel testo lo fa in maniera impeccabile mentre se deve 
aggiungerlo senza che nessun carattere sia selezionato invece di aggiungerlo 
nel punto in cui è il cursore lo mette dentro al pulsanbte che chiama la 
funzione quando voi lo cliccate (provare per credere).
In pratica se io metto il cursore nel punto dove desidero inserire il 
carattere quando clicco il pulsante relativo do il fuoco al pulsante e la 
posizione dove era il cursore viene rimpoiazzata con quella relativa al 
pulsante e la funzione scrive dentro al pulsante.
Si tratta di un errore di targeting((???)) che ff opera e safari non fanno.
Potete dare un occhiata per favore e dirmi cosa posso modificare?
Grazie 

 cliccate (provare per credere).
    ...skipped!
Io proverei a dare il focus *prima* della selezione:
cDoc.focus();
cDoc.selection.empty();
-- 
    * b *       Il tuo post č privo del MIME, attivalo in OE.
  *   y   *       Per impostare correttamente Outlook Express
*   Piero   *       e OE-QuoteFix, puoi consultare Wikipedia:
http://wiki.news.nic.it/GuidaNr_2fOutlookExpress?action=recall&date=1172714805
 


già provato da tempo
Le ho provate quasi tutte ma non ne funziona nessuna

 Le ho provate quasi tutte ma non ne funziona nessuna
Devi farlo prima di creare la selezione:
cDoc.focus(); // nel caso non vada, sostituisci con window.focus()
range = window.document.selection.createRange();
Non ho una macchina con IE su cui testare al momento.
Ti consiglio, nel caso non ti funzioni, di buttare un occhio ad altri
editor: tutti danno la possibilità di inserire testo custom, anche su
IE. Basta vedere quel che fanno, e usare un approccio simile.
-- 
"When you have eliminated the impossible, whatever remains, however
improbable, must be the truth."


?
Ciao ZERO,
allora l'ho messo dove mi hai detto tu ma:
cDoc.focus(); da lo stesso risultato di prima mentre window.focus() permette 
di inserire il carattere ma non lo mette dove era il cursore ma esattamente 
nel primo spazio in alto a sinistra della finestra (iframe) sopra alla prima 
toolbar invece di inserirlo nella finsetra di scrittura dove evidentemente 
la window inizia 

"ZER0"
scrisse qualche cosa e io dopo attenta analisi risposi
Grazie ZERO ho risolto e non per il tuo siggerimento in se stesso ma in 
seguito ad esso ho trovato la risoluzione che stava appunto nel dare il 
fuoco al target giusto
grazie

 grazie
De nada.


Ciao Zero
l'errore era il target in quanto io davo il fuoco a
cDoc che è:
var cDoc= document.getElementById(rteName).contentWindow.document;
mentre il focus andava dato al
cDoc.body.focus();
Infatti Cdoc comprende anche la toolbar ovvero è il contenitore di tutto 
quello che si vede sul video mentre cDoc.body è l'area di scrittita.
La tua risposta mi ga messo sulla strada giusta.
Ora inserisce bene i caratteri e li sostituisce se c'è del testo 
evidenziato.
Però nonosrante il focus quando clicco sulla lettera che voglio inserire me 
la inserisce ma il cursore non c'è quindi se dopo averla inserita voglio 
continuare a scrivere con la tastiera devo cliccare sul punto dove scrivere.
Come faccio a far apparire il cursore dopo il punto di inserimento di un 
carattere ?
Grazie 

 carattere ?
Temo che non sia così banale, sempre a livello crossbrowser intendo.
Devi sempre giocare un po' con i range e vedere come funziona. Ci sono
casi in cui, su alcuni browser, proprio non c'è verso di far funzionar
le cose come si vorrebbe.
Ai tempi in cui giocavo con i contentEditable se ben ricordo, quel che
facevo era salvarmi la posizione corrente del cursore prima di fare la
sostituzione e ripristinarla successivamente. Il tutto, sempre tramite
l'oggetto range.


 Grazie 
Forse perché perde il focus?
Hai provato a ridarglielo aggiungendo all'onclick il focus?
cDoc.body.focus();
-- 
    * b *       Il tuo post è privo del MIME, attivalo in OE.
