Forum Webscript.Ru

Программирование => JavaScript & JScript => Тема начата: dub от 17 Августа 2003, 21:54:00

Название: Undo/Redo, Cut/Paste
Отправлено: dub от 17 Августа 2003, 21:54:00
UNDO/REDO

Поддержка execCommand(\'Undo/Redo\') в различных версиях IE - штука довольно слуайная. Хочу написать для этих действий собственные функции. Алгоритмические размышления:

UNDO
При каждом действии некоторым образом изменяется содержимое области редакирования. Перед выполнением каждого действия текущее содержимое области редактирования можно сохранять в специальный скрытый textarea. При последующем вызове Undo заменять содержимое области редактирования на содержимое этого textarea.

REDO
При каждом вызове некоторой функции имя(атрибуты) этой функции можно сохранять в специальном скрытом input. В дальнейшем при вызове Redo вызывать функцию, соответствующую имени(параметрам), сохраненным в этом input. Понятное дело, именами самих функций Undo/Redo заменять содеримое этого input не нужно.

Вопрос: Где я не прав? Может что-то можно сделать оптимальнее?

CUT/PASTE

Существует ли кросс-браузерный/межплатформенный интерфейс с буфером обмена? Или только в IE и только под виндой?

Заранее спасибо.
Название: Undo/Redo, Cut/Paste
Отправлено: dub от 20 Августа 2003, 05:58:45
Ладно. Проехали с алгоритмом. Вернемся к execCommand(\'Undo\'/\'Redo\'). Кто нибудь знает какие-нибудь странные особенности? Есть два абсолютно идентичных вызова этого метода. В большом редакторе он не работает вообще. В тестовом файле, к которому подключается тот же .js с функциями работает замечательно. В обоих случаях Сtrl+Z и Ctrl+Y работают замечательно. Понимаю, звучит дико.
Название: Undo/Redo, Cut/Paste
Отправлено: dub от 20 Августа 2003, 06:33:57
Блин.
Нарыл кое-что. Но меня это не радует.
http://info.rt.ru/library/htmlarea/readme.html#bugs1 (http://info.rt.ru/library/htmlarea/readme.html#bugs1)
Вкратце: при наведении на кнопку по событию onMouseOver заменяется содержимое DIV c комментариями. Типа появляется писулька "Отменить". Для тех, кому лень дождаться всплывающей подсказки. Очень неплохо выглядит. Но по какой-то причине после замены innerHTML этого DIV очищается кэш Undo. А комбинацией клавиш то же самое получается, потому что мышь никуда не уводится и не вызывает это самое onMouseOver. То есть если сначала подвигать мышью над пунктами меню, то один хрен, даже клавишами не получится.
Такая вот байда. Как бы бороться с этим, а? Други?