Я непрерывно читал о попытках сделать это и нашел много близких ответов, но без сигары.Вот мой сценарий:
Я пытаюсь написать плагин jQuery, который будет работать как редактор intellisense для моих пользователей с ключевыми словами и типами данных и возможными методами.Это будет выглядеть как codeComplete в IDE.
Мне нужно получить частичное слово, которое вводится, чтобы выполнить поиск в моем массиве ключевых слов и найти соответствия для заполнения в раскрывающемся списке.Все работало довольно хорошо, пока я не нашел несколько ошибок.
У меня есть DIV contentEditable и мне нужно получить позицию курсора.У меня есть некоторый код, который был любезно предоставлен в одном из предыдущих ответов, о которых я говорил:
function getCursorPos() {
var cursorPos = 0;
if (window.getSelection) {
var selObj = window.getSelection();
var selRange = selObj.getRangeAt(0);
cursorPos = findNode(selObj.anchorNode.parentNode.childNodes, selObj.anchorNode) + selObj.anchorOffset; /* FIXME the following works wrong in Opera when the document is longer than 32767 chars */
//alert(cursorPos);
}
else if (document.selection) {
var range = document.selection.createRange();
var bookmark = range.getBookmark(); /* FIXME the following works wrong when the document is longer than 65535 chars */
cursorPos = bookmark.charCodeAt(2) - 11; /* Undocumented function [3] */
//alert(cursorPos);
}
return cursorPos; }
function findNode(list, node) {
for (var i = 0; i < list.length; i++) {
if (list[i] == node) {
return i;
}
}
return -1; }
Проблема, которую я вижу, состоит в том, что диапазон + смещение работают приблизительно для 7-8 символов, а затем пробелов и других символов.кажется, что курсор останавливает "прогрессирование", а затем вся моя функция getWord () сбрасывается.
Кто-нибудь может пролить свет на это для меня?Может быть, я не использую код, который помогает в моей конкретной ситуации.Я провел дни, пытаясь понять объекты Range и selectionRange, и это сводит меня с ума.:)