2016-03-22 1 views
0

Я хочу записать все, что пользователь делает на веб-странице (щелчок, двойной щелчок, нажатие клавиши, прокрутка и т. Д.). Я также хочу записать, когда произойдет событие.Как хранить события и значение мыши и клавиатуры

Что будет лучшим способом для хранения всех этих данных. Json, массивы, объекты или строки?

До сих пор я храню все в строку, как, что: c|15:33:22-dc|15:32:14 с = нажмите dc = двойной щелчок

мне нужно, чтобы убедиться, что информация легко извлечь.

+1

Каждое событие является сам объектом. Глубокая копия этого объекта, вероятно, была бы лучше. –

+0

@JohnHartsock Если я запишу движение мыши, вы думаете, что это будет эффективно? – jdsninja

ответ

0

Где вы хотите сохранить эти данные?

Для работы/сбора данных событий я предлагаю вам использовать объект с массивом внутри. Например:

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

Когда событие срабатывает, вы просто вставляете его в массив. Это удобно.

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

И когда вы хотите перенести данные в другое приложение, вы просто преобразуете данные в требуемый формат.

+0

Я хочу воспроизвести поведение человека на веб-странице/приложении. Я регистрирую все и воспроизвожу его. Все должно быть в какой-то временной шкале. Если я храню все в объекте/массиве, я думаю, что у меня много манипуляций, чтобы воспроизвести поведение пользователя. Когда я говорю «воспроизвести его», я имею в виду, что вы увидите поддельную мышь на экране, воспроизводящую то, что вы только что сделали. То же самое для ввода в поле формы. – jdsninja

+0

Хорошо. Это дает нам два момента: сначала: время идет вперед, и все, что мы помещаем в массив, будут сортироваться по времени по умолчанию (первый ключ (событие) - 0, второй (событие) - 1 и т. Д.). Во-вторых: вы можете использовать объект с таким ключом, как формат времени (Date.now()). – Alexander

+0

Если у вас есть какие-то типы событий, которые вы будете использовать в своем воспроизведении, вы можете удалить события в соответствующем объекте: 'var eventsLog = {'form_1': {'input_1': ['event_1'], ['event_2'] }} '. И тогда вы можете взять именно то, что вам нужно, это будет быстрее и проще. 'var fill_form = eventsLog.form_1.input_1;' Вы можете сформировать свой объект по мере необходимости. И мне все еще интересно, где вы хотите хранить эти данные (браузер, база данных или что-то другое)? Многое может зависеть от этого. – Alexander

0

Каждое событие в объектной модели документа завернуто в объект события. 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) 
}; 
+0

Спасибо! Я пытаюсь это сделать. – jdsninja

 Смежные вопросы

  • Нет связанных вопросов^_^