2013-08-07 3 views
3

작은 MCE 4에서 캐럿 위치를 가져오고 싶지만 행/열 번호를 가져오고 싶지 않습니다. 픽셀 단위로 위치를 얻고 싶습니다 (x & y dimmension). 그것은 무엇이든간에 상대적 일 수 있습니다. 마지막 사항 - 북마크와 같은 콘텐츠에 추가 태그를 만들지 않고이를 수행하고 싶습니다. TinyMCE에는이 방법이 있습니까? 또는 북마크 위치를 픽셀 단위로 가져올 수있는 옵션이 있습니까?TinyMCE 4 - 캐럿 위치 얻기

답장을 보내 주셔서 감사합니다.

답변

7

좋아, 찾았습니다.

먼저 당신이 tinymce.Editor 클래스의 인스턴스를 얻을 수있다 var editor = new tinymce.Editor(); //or another way, like tinyMCE.activeEditor

다음 TinyMCE를 위젯 jQuery를 위치와 수 :

var tinymcePosition = $(editor.getContainer()).position(); 
var toolbarPosition = $(editor.getContainer()).find(".mce-toolbar").first(); 

지금 현재 편집있어 HTML 노드의 위치를 ​​얻을 :

,536 :
var nodePosition = $(editor.selection.getNode()).position(); 
var textareaTop = 0; 
var textareaLeft = 0; 

우리는이 X를 얻을 수있는 시간 ( nodePosition.top를 통해) Y 축 위치를
if (editor.selection.getRng().getClientRects().length > 0) { 
    textareaTop = editor.selection.getRng().getClientRects()[0].top + editor.selection.getRng().getClientRects()[0].height; 
    textareaLeft = editor.selection.getRng().getClientRects()[0].left; 
} else { 
    textareaTop = parseInt($($this.selection.getNode()).css("font-size")) * 1.3 + nodePosition.top; 
    textareaLeft = nodePosition.left; 
} 

우리는 textareaTop && textareaLeft의 TinyMCE 편집기 창 (텍스트 영역)에 상대적인 캐럿 위치를 가지고 있습니다. 지금은 전체 페이지에 상대적인 위치 (브라우저 창)을 얻을 수있는 시간이다 :

var position = $(editor.getContainer()).offset(); 
var caretPosition = { 
    top: tinymcePosition.top + toolbarPosition.innerHeight() + textareaTop, 
    left: tinymcePosition.left + textareaLeft + position.left 
} 

솔루션은 autocomplete plugin for TinyMCE 3에 따라, 나는 4

+0

내가이 줄을 생각 TinyMCE에 내 요구에 적응' textAutoTop = parseInt ($ ($ this.selection.getNode()) .css ("font-size")) * 1.3 + nodePosition.top;''this.selection'은'editor.selection'이어야합니다 JS를 제 코드로 사용했을 때) – EvilDr

+0

@EvilDr 네, 맞습니다. 이것은 jQuery에 대한 나의 후퇴입니다.'$ this '를'editor'로 대체하는 것을 잊었습니다. –