Программирование > JavaScript & JScript

Undo/Redo, Cut/Paste

(1/1)

dub:
UNDO/REDO

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

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

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

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

CUT/PASTE

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

Заранее спасибо.

dub:
Ладно. Проехали с алгоритмом. Вернемся к execCommand(\'Undo\'/\'Redo\'). Кто нибудь знает какие-нибудь странные особенности? Есть два абсолютно идентичных вызова этого метода. В большом редакторе он не работает вообще. В тестовом файле, к которому подключается тот же .js с функциями работает замечательно. В обоих случаях Сtrl+Z и Ctrl+Y работают замечательно. Понимаю, звучит дико.

dub:
Блин.
Нарыл кое-что. Но меня это не радует.
http://info.rt.ru/library/htmlarea/readme.html#bugs1
Вкратце: при наведении на кнопку по событию onMouseOver заменяется содержимое DIV c комментариями. Типа появляется писулька "Отменить". Для тех, кому лень дождаться всплывающей подсказки. Очень неплохо выглядит. Но по какой-то причине после замены innerHTML этого DIV очищается кэш Undo. А комбинацией клавиш то же самое получается, потому что мышь никуда не уводится и не вызывает это самое onMouseOver. То есть если сначала подвигать мышью над пунктами меню, то один хрен, даже клавишами не получится.
Такая вот байда. Как бы бороться с этим, а? Други?

Навигация

[0] Главная страница сообщений

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 
Перейти к полной версии