Вы не зашли.
Главная » JavaScript » execCommand (замена слова)
#1. 2010 Off (1)
Участник
2011.05.03 21:09
При помощи execCommand - можно заменить одно слово на другое?
Варианты с document.getElementById( _ID_ ) и innerHTML или Text отпадают.

Я знаю такую вещь - object.document.execCommand('bold');
- но она только делает текст жирным (например, нажимаешь и пишишь жирным. Нажимаешь еще раз и пишишь уже обычным.)

А мне надо чтобы любой текст в любой позиции заменялся на тот который нужно.
Например: пишу слово var,  и оно сходу заменяется на слово жирного шрифта вот так: var

Ну что-то подобно подсветке синтаксиса (как в яваскрипте, пишешь слово "va" - никаких действий, пишешь "var" - меняет синтаксис на жирный и само собой цвет).

Говорю сразу у меня форма для ввода не TextArea, а div элемент с параметром contentEditable="true".
Эта вещь делает объект доступным для ввода текста с клавы. И вот там мне нужно это заделать. Я низнаю как имено.

вот пример вместо textarea:



<div contentEditable="true" style="overflow: auto;
                                                   width: 300px;
                                                   height: 100px;
                                                   border: 1px  solid #bbb;">
</div>


------------------------------
Я использовал вариант для замены слова при помощи document.getElement....
ogj.innerHTML = variable;

и делал обновление каждую setTimeout(... , 100).
Но ошибка была в том что при каждом обновлении текстового поля (чтобы найти слово и заменить)
- курсор уходил с этого поля и невозможно было нажать на поле ввода
(из-за постоянного процеса обновления). Низнаю почему, но вариант неверный.

Вот мне интересно, при помощи execCommand можно это сделать? или другая функция есть?
#2. Gemorroj Off (107)
Administrator
2011.05.04 10:10
честно говоря не в курсе. курсор перемещать тоже можно, если что.
#3. 2010 Off (1)
Участник
2011.05.04 11:11
Щас попробую indexOf + replace. Чтобы найти все слова в тексе например ''var'' и заменить их по циклу. А потом попробую переместить курсор на то место где он последний раз остановился. Думаю если использовать просто select() - то он появится в конце (если там кода оч много - это просто смерть). Например там написано:

va object1 = ...;
var object2 = ...;

В первой строке (object1) не хватает буквы ''r''. когда я её добовляю - строkа становится такая:
var object1

и слово вар становиться жирным шрифтом. Потом курсор уходит с редактора и я пробую поместить его обратно после слова var. Иначе он появится в конце или в начале если задействовать select. Короче щас попробую.
#4. Gemorroj Off (107)
Administrator
2011.05.04 11:11
там, правда, все браузеры по разному ведут себя, по крайней мере, по моему опыту перемещения курсора внутри textarea.
#5. 2010 Off (1)
Участник
2011.05.04 12:12
Ну да, каждые браузеры по своему. Но я для IE пишу редактор. Так как компилятор ZZEE Phpexe компилирует под браузер IE. Ну в общем замена слова в текстовом поле не важна. Но я решил попробывать. Сам проект уже готов почти.
Страниц: 1
Главная
WEB
PunBB Mod v0.6.2
0.012 s