2017-11-11 1 views
1

텍스트 인덱스 위치를 사용하여 특정 텍스트를 어떻게 선택합니까?CKEDITOR : 시작, 끝 인덱스 위치를 사용하여 텍스트 선택

나는 편집기에서 para를 가지고 있으며 인덱스 위치를 사용하여 텍스트를 선택하려고합니다. 어떻게해야합니까?

<p>My Tes<b>ti</b>ng Point</p> 

샘플 나는 그들의 인덱스 위치 4, 11를 사용하여 테스트을 선택하고 싶었다. 그리고 나는 이것을 달성하기 위해 아래 코드를 사용하고 있습니다.하지만 전혀 작동하지 않습니다.

var editor = CKEDITOR.instances.editor1; 
    range = editor.createRange(); 
    range.setStart(4); 
    range.setEnd(11); 
    editor.getSelection().selectRanges([range]); 

제게 도와주세요.

참고 :

내가 텍스트 노드를 다음 텍스트를 선택하지 않아야합니다 개념을 사용하고있는 경우.

답변

1

CKEditor 콘텐츠는 평면이 아니지만 트리 구조와 유사한 HTML 데이터이므로 인덱스 만 사용하여 선택을 간단하게 설정할 수 없습니다.

당신이 range.setStartrange.setEnd의 문서에서 볼 수있는이 두 개의 매개 변수 startNode/endNodestartOffset/endOffset을 필요로한다. 오프셋은 항상 특정 요소에 상대적으로 설정되며 콘텐츠 시작 부분에 절대적으로 설정되지는 않습니다. 귀하의 경우에는

, 먼저 이러한 요소에 상대적으로 오프셋 설정합니다 다음 특정 요소를 찾아해야합니다

var editable = editor.editable(), 
    startNode = editable.findOne('p'), 
    endNode = startNode, 
    range = editor.createRange(); 

range.setStart(startNode.getChild(0), 4); // Get first child which is text node "My Tes". 
range.setEnd(endNode.getChild(2), 2); // Get third child which is text node "ng Point". 
editor.getSelection().selectRanges([ range ]); 
관련 문제