Ho problemi nello sviluppo di plugin CKEditor che inseriscono contenuti non modificabili nel flusso del testo. Ho cercato di utilizzare le funzioni della gamma, ma con scarso successo in quanto la documentazione è meno che stellare. Quindi, dato un testo, diciamo gli inserti del plugin "[[roba non modificabile]]" e poi su di visualizzazione WYSIWYG avvolge che in un arco di modo che possa essere designato in un colore:CKEditor posizione del cursore dopo l'inserimento dell'elemento non modificabile
<p>This is some text[[uneditable stuff here]]</p>
Al primo inserimento roba immutabile, vogliamo che l'utente possa continuare a digitare o premere Invio per una nuova riga. Il seguente codice (che sono arrivato qui: How to set cursor position to end of text in CKEditor?) funziona in Firefox, ma (naturalmente) non in IE9, 8 o 7:
var s = editor.getSelection();
editor.insertElement(e); // element 'e'= a span created earlier
var p = e.getParent();
s.selectElement(p);
var selected_ranges = s.getRanges();
selected_ranges[0].collapse(false); // false = to the end of the selected node
s.selectRanges(selected_ranges); // putting the current selection there
Quindi quello che voglio che accada è che il cursore passa alla posizione "^" :
<p>This is some text<span>[[uneditable stuff here]]</span>^</p>
Se il nuovo elemento non è alla fine della linea, dopo la creazione di esso, il cursore dovrebbe andare a qui:
<p>This is some text<span>[[uneditable stuff here]]</span>^ with more text after the new element</p>
In FF, posso ottenere il cursore alla fine della linea anche se non in posizione dopo il nuovo elemento. In IE, il cursore è ancora all'interno del nuovo SPAN, che vedo quando digito ed è ancora nel colore css dello span, e quando si passa alla visualizzazione SOURCE, il testo è scomparso (perché è un'estensione non modificabile).
So che esiste un metodo range.setStartAfter, ma non sono stato in grado di farlo funzionare anche in FF/Chrome.
Qualcuno ha una buona padronanza sull'utilizzo dei metodi di intervallo e selezione in CKEditor? Lo so I no!
Iniziare a pensare che usare semplicemente editor.insertElement sia sbagliato, e dovrei conoscere le funzioni di FakeElement (insertBogus?), Che non capisco ancora. I plug-in per immagini come link e immagini non sembrano avere questo problema.
Sto provando a risolvere questo problema adesso. Hai avuto qualche successo da quando hai postato? – coyotesqrl