#1 2011.05.03 21:22

2010
Участник
Откуда: localhost
Зарегистрирован: 2010.02.20
Сообщений: 230
Карма: 1
Профиль

execCommand (замена слова)

При помощи 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 2011.05.04 10:58

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: execCommand (замена слова)

честно говоря не в курсе. курсор перемещать тоже можно, если что.

Неактивен

#3 2011.05.04 11:10

2010
Участник
Откуда: localhost
Зарегистрирован: 2010.02.20
Сообщений: 230
Карма: 1
Профиль

Re: execCommand (замена слова)

Щас попробую indexOf + replace. Чтобы найти все слова в тексе например ''var'' и заменить их по циклу. А потом попробую переместить курсор на то место где он последний раз остановился. Думаю если использовать просто select() - то он появится в конце (если там кода оч много - это просто смерть). Например там написано:

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

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

и слово вар становиться жирным шрифтом. Потом курсор уходит с редактора и я пробую поместить его обратно после слова var. Иначе он появится в конце или в начале если задействовать select. Короче щас попробую.

Неактивен

#4 2011.05.04 11:24

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: execCommand (замена слова)

там, правда, все браузеры по разному ведут себя, по крайней мере, по моему опыту перемещения курсора внутри textarea.

Неактивен

#5 2011.05.04 12:44

2010
Участник
Откуда: localhost
Зарегистрирован: 2010.02.20
Сообщений: 230
Карма: 1
Профиль

Re: execCommand (замена слова)

Ну да, каждые браузеры по своему. Но я для IE пишу редактор. Так как компилятор ZZEE Phpexe компилирует под браузер IE. Ну в общем замена слова в текстовом поле не важна. Но я решил попробывать. Сам проект уже готов почти.

Неактивен

Дополнительно

forum.wapinet.ru

PunBB Mod v0.6.2
0.008 s