Есть ли выгодный способ записи действий пользователя в текстовом поле?
-
19-09-2019 - |
Вопрос
Мне нужно отправить на сервер кучу команд по таймеру, например:
put(0,"hello")
del(4,1)
put(4," is around the corner")
поэтому мне нужно отслеживать и записывать весь ввод пользователя и компилировать/сбрасывать его по тайм-ауту (бездействующему), что-то вроде макросов.
Я могу записывать все, что происходит onKeyUp
/onKeyDown
/onMouseDown
/onMouseUp
используя позицию курсора текстовой области и информацию о клавишах (и сделайте ее кроссбраузерной когда-то позже), но я не могу обрабатывать такие вещи, как вставка с помощью правой кнопки мыши и выбора «Вставить» или вставка из меню (я могу справиться с onChange
, но у меня не будет информации, оно вставлено или уже записано как нажатые клавиши и срабатывает только после смены фокуса).Даже вставка из контекстного меню дает некоторую полезную информацию, но меню браузера — единственное, что ничего не дает для Javascript.
Есть ли какой-нибудь плагин для jQuery или что-то в этом роде, и действительно ли у меня нет других способов реализовать его без сравнения текущего документа и документа, сделанного за секунду до этого?
Обновление: Есть события для обработки 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
метод.
Решение
В зависимости от браузера вы можете прослушивать события вырезания/копирования/вставки.Поэтому, если они срабатывают, вы можете их использовать, в противном случае вернитесь к более утомительному обходному пути.
Видеть: http://www.quirksmode.org/dom/events/cutcopypaste.html