Forum Webscript.Ru
Программирование => JavaScript & JScript => Тема начата: 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 и только под виндой?
Заранее спасибо.
-
Ладно. Проехали с алгоритмом. Вернемся к execCommand(\'Undo\'/\'Redo\'). Кто нибудь знает какие-нибудь странные особенности? Есть два абсолютно идентичных вызова этого метода. В большом редакторе он не работает вообще. В тестовом файле, к которому подключается тот же .js с функциями работает замечательно. В обоих случаях Сtrl+Z и Ctrl+Y работают замечательно. Понимаю, звучит дико.
-
Блин.
Нарыл кое-что. Но меня это не радует.
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. То есть если сначала подвигать мышью над пунктами меню, то один хрен, даже клавишами не получится.
Такая вот байда. Как бы бороться с этим, а? Други?