Я использую экземпляр CKEditor и могу вставлять текст в CKEditor в точке курсора. Я хочу иметь возможность захватить весь текст слева от курсора до начала строки.
Я пытался найти координаты X, Y курсора, и это не помогло. Я уверен, что со всеми инструментами CKEDITOR это можно сделать, но я не смог выяснить, какие инструменты использовать вместе, чтобы заставить это работать.
var theEditor = CKEDITOR.instances.editorFull;
sel = theEditor.getSelection();
obj = sel.getStartElement().$;
range = theEditor.getSelection().getRanges();
container = range[0].startContainer.$;
textlen = typeof obj.textContent === "undefined" ? obj.innerText.length : obj.textContent.length;
offset = range[0].startOffset;
if(container.nodeType === 3) {
while (container.previousSibling) {
container = container.previousSibling;
if(container.length) {
offset += container.length;
}else{
offset += container.textContent ? container.textContent.length : container.innerText.length;
}
}
}
var pct = textlen > 0 ? offset / textlen : 0;
cursor = Math.floor(obj.offsetHeight * pct);
while (obj.offsetParent) {
cursor += obj.offsetTop;
obj = obj.offsetParent;
}
cursor += obj.offsetTop;
alert(cursor);
Это была моя попытка выяснить, где находится курсор, и это работает, но я не совсем уверен, какую информацию я получаю в предупреждении, поэтому мне это не нужно.
То, что я хочу, это гипотетически. В приведенном ниже тексте используется | как курсор, и это будет найдено внутри моего экземпляра CDEditor:
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam ex nunc,
tincidunt id |arcu in, semper volutpat nulla. Nunc efficitur egestas magna
vitae consequat.
Обратите внимание на | в "id |arcu". Я хочу иметь возможность захватывать текст "tincidunt id" в зависимости от положения курсора. Я не хочу, чтобы он захватывал что-либо с конца строки над этим текстом. По сути, остановитесь на переносе слов.
Любые идеи? Спасибо.
Аллен