Показать сообщение отдельно
  #7 (permalink)  
Старый 24.12.2009, 07:09
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

В общем ситуация такая: есть wysiwyg, пользователь печатает в нем, и как только в тексте появляются какие-то определенные конструкции, их нужно подсвечивать. Я сначала хотел менять body.innerHTML , но наверно не получится т. к. при любом его изменении выделение с wysiwyg-а теряется и непонятно как его вернуть обратно (там просто много всяких тегов появляется при изменении innerHTML и они сильно мешают найти места начала и конца пропавшего выделения). Можно еще создавать Range объект и используя его метод surroundContents подсвечивать то, что нужно, но перед этим нужно удалить все предыдущие подсветки (текст постоянно меняется, какие-то подсветки должны появляться, другие исчезать, нужно просто при каждом mouseup все чистить и расцвечивать заново), непонятно как все очистить от тегов если нельзя трогать innerHTML. Есть вариант выделить все:
var r = iDoc.createRange();
r.selectNodeContents(iDoc.body);
var sel = regExpTextWin.getSelection();
sel.removeAllRanges();
sel.addRange(r);


и используя execCommand все очистить:
iDoc.execCommand('RemoveFormat', false, '');


, но опять же нужно как-то обратно вернуть выделение.

Такое ощущение что я велик изобретаю.
Octane, подскажи, пожалуйста, как все это надо делать.

Последний раз редактировалось Riim, 24.12.2009 в 07:12.
Ответить с цитированием