【发布时间】:2009-11-13 13:02:44
【问题描述】:
我需要在计时器上向服务器发送一堆命令 - 比如:
put(0,"hello")
del(4,1)
put(4," is around the corner")
所以我需要监控和记录所有用户输入并在超时(空闲)时编译/刷新它,比如宏。
我可以使用 textarea 光标位置和键信息记录 onKeyUp/onKeyDown/onMouseDown/onMouseUp 发生的所有事情(并使其跨浏览器一段时间之后)但是我无法处理诸如使用鼠标右键粘贴并选择“粘贴”或从菜单中粘贴(我可以处理 onChange,但我没有任何信息是它已粘贴或已记录为按下的键,并且仅在之后触发焦点变化)。即使从上下文菜单中粘贴也会触发一些有用的信息,但浏览器中的菜单是唯一的,对 Javascript 没有任何帮助。
是否有任何 jQuery 插件或类似的东西,如果不比较 current-document 和 document-a-second-before,我真的没有其他方法可以实现它吗?
更新: 有一些事件需要处理 cut/copy/paste: http://www.quirksmode.org/dom/events/cutcopypaste.html ,但是呢?
undo 一个?
附:如果有人真的需要,我会在完成后显示一个宏录制代码。为了正确完成它,我只需要undo 处理可能性。当前版本在这里:http://code.google.com/p/sametimed/source/browse/WebContent/module-editor.js,寻找compileCommands方法。
【问题讨论】:
-
我写过“从菜单粘贴什么都不会触发”,但这是不正确的,正如stefpet 提到的那样,在大多数浏览器中都会触发“粘贴”事件。
-
禁用鼠标右键并覆盖 Ctrl C、V、X、Z 不是首选?
-
不,那不好 - 我正在用 javascript 编写一个编辑器,它必须为用户提供所有可能的功能,但还要与服务器通信(给自己做一个标记 :了解其他 js 编辑器的行为方式)。无论如何,我不知道禁用浏览器“编辑”菜单的可能方法。
-
如果有办法从菜单中禁用撤消命令,我会使用它并为它制作一个特殊按钮 - 如果没有其他事情可做。
标签: javascript jquery-plugins macros textarea jquery-events