Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.07.2012, 19:07
Аватар для Apollo_440
Аспирант
Отправить личное сообщение для Apollo_440 Посмотреть профиль Найти все сообщения от Apollo_440
 
Регистрация: 06.05.2012
Сообщений: 48

Получение слова "из-под каретки"
Встала необходимость выделить слово на месте каретки в редактируемом диве. В гугле ничего подходящего не нашел. Не подскажете как это осуществить?
Ответить с цитированием
  #2 (permalink)  
Старый 28.07.2012, 21:50
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Apollo_440,
Выложите HTML пример
Ответить с цитированием
  #3 (permalink)  
Старый 28.07.2012, 22:19
Аватар для Apollo_440
Аспирант
Отправить личное сообщение для Apollo_440 Посмотреть профиль Найти все сообщения от Apollo_440
 
Регистрация: 06.05.2012
Сообщений: 48

Примерно так:

<div style="border:1px solid #AAA;width:350px;height:200px" contenteditable>
Здесь текст, много т<u>екста с ф</u><strong><u>ормат</u>ирован</strong>ием
</div>


Необходимо получить слово, на котором есть каретка, а затем его выделить, ну или хотя бы alert ом показать что за оно.
Ответить с цитированием
  #4 (permalink)  
Старый 28.07.2012, 22:55
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Получить курсор в элементе с contentEditable="true"
Ну туть что-то есть
Ответить с цитированием
  #5 (permalink)  
Старый 30.07.2012, 01:01
Аватар для Apollo_440
Аспирант
Отправить личное сообщение для Apollo_440 Посмотреть профиль Найти все сообщения от Apollo_440
 
Регистрация: 06.05.2012
Сообщений: 48

Кажись там описано только как получить каретку в contenteditable. Вы может меня не совсем поняли, но мне нужно получить слово, в котором мигает каретка. В результате должно получиться так, как будто я сделал doubleckick на слове (в браузерах оно сразу же выделяется). Вот такое мне необходимо. То есть самая главная задача - получить начало и конец слова в котором каретка.
Ответить с цитированием
  #6 (permalink)  
Старый 30.07.2012, 01:05
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от Apollo_440
как получить каретку в contenteditable
ну читаете весь контент - определяете положение каретки - далее регуляркой - определяете ближайшие пробелы в контенте от положения каретки - это и есть границы слова...

function FindWord(str,pos) { //alert(' pos='+pos+'\n'+str)
 var L =str.length;
 var Le =L-pos;
 //1 стоим не на пробеле ? //
if(str.substring(pos,pos+1).search(/\s/i)!=-1)return false;
//2 определяем начало слова
 for(var i=pos; i>-1; i--){//alert(i)
    if(str.substring(i,pos).search(/\s/i)!=-1)break;
 }
 var st = 0;if(i)st=i+1;
 for(var i=pos; i<L; i++){//alert(i)
    if(str.substring(i,pos).search(/\s/i)!=-1)break;
 }
 var end = L-1;if(i)end=i-1;
 return str.substring(st,end)
}
var str = 'ну читаете весь контент - определяете положение каретки - далее регуляркой - определяете ближайшие \
пробелы в контенте от положения каретки - это и есть границы слова...'
var pos=39; 

alert(FindWord(str,pos))

Последний раз редактировалось Deff, 30.07.2012 в 01:47.
Ответить с цитированием
  #7 (permalink)  
Старый 30.07.2012, 01:39
Аватар для Apollo_440
Аспирант
Отправить личное сообщение для Apollo_440 Посмотреть профиль Найти все сообщения от Apollo_440
 
Регистрация: 06.05.2012
Сообщений: 48

Благодарю. Думаю это то, что надо мне.

Последний раз редактировалось Apollo_440, 30.07.2012 в 01:51.
Ответить с цитированием
  #8 (permalink)  
Старый 30.07.2012, 01:51
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от Apollo_440
Проблема в том, что слово может разбиваться на несколько сегментов с помощью тегов, а это означет, что будет трудно получить значение, ведь надо знать где начинается и заканчивается слово. Это я показывал в примере:
Задача тож оч подобная - завтра выложу - вместо пробелов тестим нахождение внутри угловых скобок - если - да находим края тега ... далее всё просто
Ответить с цитированием
  #9 (permalink)  
Старый 30.07.2012, 14:43
Аватар для Apollo_440
Аспирант
Отправить личное сообщение для Apollo_440 Посмотреть профиль Найти все сообщения от Apollo_440
 
Регистрация: 06.05.2012
Сообщений: 48

Есть же конечно стандартные способы, такие как expand (функция называется в каждом браузере по-разному), например seRange.expand("word") (ie), в лисе своя... Вот только в опере такого ненту , иначе проблема канула бы в лету.
Ответить с цитированием
  #10 (permalink)  
Старый 30.07.2012, 14:59
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Apollo_440,
К вечеру сделаю - сейчас занят (*Положение каретки буду считать якобы уже считанным)
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск