【问题标题】:How to store mouse & keyboard event and value如何存储鼠标和键盘事件和值
【发布时间】:2016-03-22 14:08:17
【问题描述】:

我想记录用户在网页中所做的一切(单击、双击、按键、滚动等)。我也想记录事件发生的时间。

存储所有这些信息的最佳方式是什么。 Json、数组、对象还是字符串?

到目前为止,我将所有内容都存储在这样的字符串中: c|15:33:22-dc|15:32:14 c = 点击 dc = 双击

我需要确保信息易于提取。

【问题讨论】:

  • 每个事件本身就是一个对象。这个对象的深层副本可能是最好的。
  • @JohnHartsock 如果我记录鼠标移动,你认为它会高效吗?

标签: javascript arrays object events storing-data


【解决方案1】:

文档对象模型中的每个事件都包装在一个事件对象中。 https://developer.mozilla.org/en-US/docs/Web/API/Event/Event

如果我创建一个 onclick 事件,该函数的参数之一就是事件。您可以记录这些事件对象。

jQuery

var myEventList= [],
$('#myID').on('click', function(event) {
   myEventList.push(event);
});

JavaScript

var myEventList=[];
document.getElementById('myID').onclick = function(event) {
   myEventList.push(event)
};

【讨论】:

  • 谢谢!我试试看。
【解决方案2】:

您想将这些数据存储在哪里?

为了工作/收集这些事件,我建议您使用内部带有数组的对象。像这样:

var eventsLog = {"mouse":[],"keyboard":[]};

当事件触发时,您只需将其推送到数组中。很舒服。

var insert = [new Date(), 'event_name'];
(eventsLog.mouse).push(insert);

当您想将数据传输到另一个应用程序时,您只需将数据转换为所需的格式即可。

【讨论】:

  • 我想在网页/应用程序中重现人类行为。生病注册所有内容并播放。一切都需要在某种时间线上。如果我将所有内容存储在对象/数组中,我认为我会进行大量操作以重现用户行为。当我说“回放”时,我的意思是你会在屏幕上看到一个假鼠标,再现你刚刚所做的事情。在表单字段中输入也是如此。
  • 好的。它给了我们两点:第一:时间在前进,我们放入数组的所有内容都将默认按时间排序(第一个键(事件)- 0,第二个(事件)- 1,等等)。第二:您可以使用带有“时间”格式(Date.now())之类的键的对象。
  • 如果您有某些类型的事件,您将在回放中使用这些事件,您可以将事件拖放到适当的对象中:var eventsLog = {'form_1':{'input_1':['event_1'],['event_2']}}。然后您可以准确地获取您需要的东西,它会更快更简单。 var fill_form = eventsLog.form_1.input_1; 您可以根据需要形成对象。而且我仍然很有趣你想在哪里存储这些数据(浏览器、数据库或其他东西)?很多事情可能取决于它。
  • 大病试一试。现在,一切都是本地主机。所有数据都将存储在 data.js 中。刷新时丢失了数据。步骤 2,将数据存储在 mongoDB 上。用户将单击“开始”,这将创建一个会话 ID。 start 和 end 之间的所有数据都将存储在此 session id 下。
  • 在这种情况下,您需要使用诸如日期基准之类的东西。例如 window.localStorage。但我建议您从开发一开始就使用数据库。它会给你更多的灵活性。您可以按 session_id、time_period、type_of_event 等对数据进行排序和分组。无论如何,这是一项非常大的工作。也许您可能希望使用现成的 API(如 Google Analytics 或类似的东西)寻找现成解决方案的方向?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-01
  • 1970-01-01
相关资源
最近更新 更多