Javascript 如何";播放“;用户类型-MVC

Javascript 如何";播放“;用户类型-MVC,javascript,asp.net,asp.net-mvc,asp.net-mvc-3,Javascript,Asp.net,Asp.net Mvc,Asp.net Mvc 3,我需要创建一个文本区域,用户可以在其中键入文本,管理员应该能够以不同的速度回放用户的操作 例如:一个用户输入-我的名字是Bob,输入Dave,我需要捕获这些,这样当管理员“播放”时,他应该看到用户输入的确切内容。此外,管理员应该能够发挥这在相同的速度,2倍的速度和4倍的速度 除了必须在数据库中使用javascript捕获每个击键并将其用于播放之外,还有什么简单的方法可以做到这一点吗?谢谢这在很大程度上是一个客户端问题-服务器不知道键入了什么,直到表单一次提交完所有内容 从理论上讲,你可以使用Ja

我需要创建一个文本区域,用户可以在其中键入文本,管理员应该能够以不同的速度回放用户的操作

例如:一个用户输入-我的名字是Bob,输入Dave,我需要捕获这些,这样当管理员“播放”时,他应该看到用户输入的确切内容。此外,管理员应该能够发挥这在相同的速度,2倍的速度和4倍的速度


除了必须在数据库中使用javascript捕获每个击键并将其用于播放之外,还有什么简单的方法可以做到这一点吗?谢谢

这在很大程度上是一个客户端问题-服务器不知道键入了什么,直到表单一次提交完所有内容

从理论上讲,你可以使用JavaScript记录每一次按键,但要让它顺利运行(在服务器端重建消息、以有用的方式存储消息、编写播放器等),这将是一项巨大的任务

此外,这里还有一个安全问题——如果有人不小心粘贴了信用卡号,然后将其删除,会发生什么情况?在这方面,您将如何处理复制/粘贴

总之,这在技术上是可行的,但它不是微不足道的,并且存在严重的安全/隐私问题

如果您坚持尝试此方法,步骤如下:

  • 抓住每一个关键点
  • 在表单提交时或连续使用AJAX时,将它们与精确的时间戳一起传输到服务器
  • 在数据库中记录针对某个用户/url/唯一表单Id的击键
  • (可能与表单对该击键数据的实际操作有关)
  • 编写一个可以读取所有击键信息的页面,加载输入的页面,注入一些javascript/html,在普通页面上添加一个“播放器”
  • 重复击键

正如您所见,这是一项严肃的任务。

您必须跟踪每一个关键点。我会将textarea的当前值与当前客户端的击键时间一起发布到Action方法。从这里您可以回放用户正在做的事情

$("textarea").bind("keypress", function(e) {
    Post();
}

$(":text, textarea").bind("input paste", function(e) {
    Post();
}

这个问题与ASP无关,只与Javascript有关。我同意Kay的观点,不是ASP.NET,也不是MVC。@Kay和所有的反对者,这是一个合理的问题。OP了解JavaScript方法,但希望找到替代方案;没有必要否决投票。@kay-我想这将取决于OP试图实现的目标。例如,如果OP试图为一所学校或类似的机构创建一个打字导师网站。我个人不会建立一个网站来尝试这样做,但是一个人可以尝试,并且不会有恶意意图,也可能不会有安全问题。这很像你发布的另一个问题:我不在乎复制粘贴。如果他们真的这样做了,管理员应该知道他们在打字测试中作弊了。@如果是针对特定表单上的特定文本框,解决方案就会简单得多-使用jQuery one@hunter在回答中使用的捕获机制。给每个测试一个唯一的id-可能是一个guid。使用
$.post()
通过ajax将数据(
+
时间戳
)发送回服务器。确保在JS中捕获时间以消除网络延迟。将其全部存储在数据库中,然后将其作为“脚本”使用,您可以使用JS进行回放。为每次击键编写ajax post难道不是非常昂贵吗?@Dusty如果使用ajax,您可能希望对其进行缓冲-因此每击100次键或在一段不活动的时间后,您都会将数据发送到服务器。使用AJAX实际上没有任何好处,除非您希望能够从另一个系统观看“直播”。如果做不到这一点,用表单发布数据同样有用,但对网络友好得多。注:我假设没有人会投入足够的资金来尝试和操作击键数据。。。