【问题标题】:Is there a profitable way to record user actions in textarea?在 textarea 中记录用户操作是否有盈利的方法?
【发布时间】: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


【解决方案1】:

您可以收听剪切/复制/粘贴的事件,具体取决于浏览器。因此,如果它们被触发,您可以使用它们,否则会退回到更繁琐的解决方法。

见:http://www.quirksmode.org/dom/events/cutcopypaste.html

【讨论】:

  • 似乎我已经忘记了这些事件,也许它们真的会帮助我 - 谢谢。
  • 好的,undo 的处理程序是否存在(来自浏览器菜单或上下文菜单)?我找到了我需要的一切,但不是这个:(。
猜你喜欢
  • 2017-02-07
  • 2012-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多