Есть ли выгодный способ записи действий пользователя в textarea? - PullRequest
2 голосов
/ 13 ноября 2009

Мне нужно отправить кучу команд на сервер по таймеру, например:

put(0,"hello")
del(4,1)
put(4," is around the corner")

, поэтому мне нужно отслеживать и записывать все вводимые пользователем данные и компилировать / очищать их по тайм-ауту (в режиме ожидания), что-то вроде макросов.

Я могу записывать все происходящее onKeyUp / onKeyDown / onMouseDown / onMouseUp, используя позицию курсора textarea и информацию о клавишах (и сделать это кросс-браузерным через некоторое время позже), но не могу обрабатывать такие вещи, как вставка с помощью правой кнопки мыши и выбора «Вставить» или вставка из меню (я могу обработать onChange, но у меня не будет никакой информации, вставлена ​​ли она или уже записана как нажатая клавиша, и срабатывает только после фокуса менять). Даже вставка из контекстного меню вызывает некоторую полезную информацию, но меню из браузера - единственное, что ничего не дает для Javascript.

Есть ли какой-нибудь плагин для jQuery или что-то в этом роде, и у меня действительно нет других способов реализовать его без сравнения current-document и document-a-second-before?

Upd.: Есть события для обработки cut / copy / paste: http://www.quirksmode.org/dom/events/cutcopypaste.html, но как насчет undo один?

P.S. Я покажу код записи макросов, когда закончу, если кому-то это действительно нужно. И чтобы закончить все правильно, мне просто нужна возможность обработки undo. Текущая версия здесь: http://code.google.com/p/sametimed/source/browse/WebContent/module-editor.js, ищите compileCommands метод.

1 Ответ

1 голос
/ 13 ноября 2009

В зависимости от браузера вы можете прослушивать события вырезания / копирования / вставки. Поэтому, если они сработали, вы можете использовать их, в противном случае вернитесь к более утомительному обходу.

См .: http://www.quirksmode.org/dom/events/cutcopypaste.html

...