좋아, 찾았습니다.
먼저 당신이 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
내가이 줄을 생각 TinyMCE에 내 요구에 적응' textAutoTop = parseInt ($ ($ this.selection.getNode()) .css ("font-size")) * 1.3 + nodePosition.top;''this.selection'은'editor.selection'이어야합니다 JS를 제 코드로 사용했을 때) – EvilDr
@EvilDr 네, 맞습니다. 이것은 jQuery에 대한 나의 후퇴입니다.'$ this '를'editor'로 대체하는 것을 잊었습니다. –