รับพิกัดของการเลือกใน CKEditor

เมื่อเลือกข้อความ ฉันต้องการให้ช่วงปรากฏด้านบน (เช่น คำแนะนำเครื่องมือ) นี่คือช่วง:

var span = new CKEDITOR.dom.element.createFromHtml('<span style="position:absolute; display: none; " >Tooltip</span>'); span.setStyle('border', '2px solid black'); span.setStyle('width', '50px'); span.setStyle('height', '50px');

จะต้องเพิ่มไว้เหนือส่วนที่เลือก แต่ฉันไม่พบวิธีรับพิกัดของส่วนที่เลือก:

span.setStyle('display', 'none');
var editorSel = editor.getSelection();
var selElement = editorSel.getSelectedElement();
if (editorSel.getSelectedText() != '') {
setTimeout(function() {
     //Some way to get the coordinates
     span.setStyle('top', top + 'px');
     span.setStyle('left', left + 'px');
     span.setStyle('display', 'block');

     var ranges = editorSel.getRanges();
     var range = ranges[0];
     range.insertNode(span);
}

ความช่วยเหลือใด ๆ จะได้รับการชื่นชมอย่างมาก


person user3568791    schedule 28.04.2015    source แหล่งที่มา


คำตอบ (1)


คุณสามารถรับออบเจ็กต์หน้าต่างตัวแก้ไขได้จาก CKEditor โดยใช้สิ่งต่อไปนี้ แม้ว่าอาจมีวิธีที่ตรงกว่าก็ตาม:

var win = editor.window.$;

จากนั้นคุณสามารถใช้ getSelectionCoords() จากคำตอบนี้:

var coords = getSelectionCoords(win); 
person Tim Down    schedule 29.04.2015