2011-04-21 7 views
3

어떻게 CKEditor3.x에서 캐럿을 배치 할 수 있습니까? 2 개의 포지션이 있으며 두 위치 모두에서 insertHTML()을 사용하고 싶습니다.CKEditor : 커서/캐럿 위치 설정

의사 코드 :

editor.setCaret(20); // function does not exists 
editor.insertHtml('::'); 
editor.setCaret(40); // function does not exists 
editor.insertHtml('::');

나는 (: 20 위치로 캐럿을 설정) : 시도이 작동하지 않습니다

var ranges = []; 
var range = new CKEDITOR.dom.range(this.document); 
range.startOffset = 20; 
range.endOffset = 20; 
ranges.push(range); 
editor.getSelection().selectRanges(ranges);

. 아무도 나를 도와 줄 수 있니?

답변

3

텍스트를 삽입하거나 편집기에서 html로 처리하려면 캐럿 위치를 가져올 필요가 없습니다.

평소와 같이 처리하십시오.

P. 당신은 아마 DOM을 조작 한 후 커서 위치를 복원하려면 다음을 대신 삽입 HTML의 insertElement를 사용하는 경우이

var s = editor.getSelection(); 
var selected_ranges = s.getRanges(); // save selected range 
// do something 
s.selectRanges(selected_ranges); // restore it 
+2

삽입을 수행하기 전에 범위를 저장하고 삽입 된 요소 뒤에 커서를 놓으려면이 작업이 수행되지 않습니다. 삽입 된 요소 앞에 커서를 놓습니다. 아직 삽입 된 요소 다음에 커서를 놓는 방법을 찾지 못했습니다. 정상적인 동작은 커서가 삽입 된 요소의 내부에 있다는 것입니다. 일부 유스 케이스에서는 작동하지 않습니다 (내!). – eon

+0

'CKEDITOR.dom의 인스턴스를 반환해야하는'getSelectedElement()'함수가 있습니다 (http://docs.ckeditor.com/#!/api/CKEDITOR.dom.selection-method-getSelectedElement 참조). .element'에 포커스를 다음 요소로 옮겨야하는'focusNext' 메서드가 있습니다 (http://docs.ckeditor.com/#!/api/CKEDITOR.dom.element-method-focusNext 참조). 하지만 난 그저 일을 할 수 없어 =/ 어쩌면 누군가가 그 방향으로 파고 수 있습니다 .. – s3v3n

1

시도 (말하기, 스팬 요소를 삽입) 아마 작동합니다 :

editor.insertElement(element); 
var range = new CKEDITOR.dom.range(editor.document); 
range.moveToElementEditablePosition(element, true); 
editor.getSelection().selectRanges([range]);