Mam problemy z tworzeniem wtyczek CKEditor, które wstawiają zawartość nieedytowalną do przepływu tekstu. Próbowałem wykorzystać funkcje zakresu, ale z niewielkim powodzeniem, ponieważ dokumentacja jest mniej niż gwiezdna. Tak więc, biorąc pod uwagę jakiś tekst, powiedzmy wkładki plugin „[[nieedytowalny rzeczy]]”, a następnie na wyświetlaczu WYSIWYG owija że w rozpiętości więc może być stylizowany w kolorze:Pozycja kursora CKEditor po wstawieniu elementu, którego nie można edytować
<p>This is some text[[uneditable stuff here]]</p>
Kiedy pierwszy wprowadzającej w przypadku plików nieedytowanych, chcemy, aby użytkownik mógł kontynuować pisanie lub wciskanie Enter w nowej linii. Poniższy kod (który mam tutaj: How to set cursor position to end of text in CKEditor?) działa w Firefox, ale (oczywiście) nie w IE9, 8 lub 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
Więc co chcę się zdarzyć, że kursor przechodzi w pozycji „^” :
<p>This is some text<span>[[uneditable stuff here]]</span>^</p>
Jeśli nowy element nie znajduje się na końcu linii, a następnie po jego utworzeniu, kursor powinien udać się tutaj:
<p>This is some text<span>[[uneditable stuff here]]</span>^ with more text after the new element</p>
W FF, mogę ustawić kursor na końcu linii, ale nie na pozycji po nowym elemencie. W IE kursor nadal znajduje się wewnątrz nowego SPANU, które widzę po wpisaniu i nadal jest w kolorze css span, a po przejściu do widoku SOURCE tekst nie działa (ponieważ jest to niepodzielny zakres).
Wiem, że istnieje metoda range.setStartAfter, ale całkowicie nie udało się jej uruchomić nawet w FF/Chrome.
Czy ktoś ma naprawdę dobry chwyt przy użyciu metod wyboru i selekcji w CKEditorze? Wiem, I nie!
Zaczynam myśleć, że samo użycie editor.insertElement jest złe, i powinienem się nauczyć o funkcjach FakeElement (insertBogus?), Których jeszcze nie rozumiem. Wtyczki giełdowe, takie jak linki i obrazy, nie wydają się mieć tego problemu.
Próbuję rozwiązać ten problem już teraz. Czy od tego czasu odniosłeś z nim sukces? – coyotesqrl