Не знаю точных деталей реализации того, как crazyegg делает это, но я бы сделал так, чтобы хранить события мыши в массиве, который я бы периодически отправлял через AJAX в серверную часть & ndash; например Захваченные события мыши собираются и отправляются каждые 30 секунд на сервер. Это избавляет от необходимости создавать запрос для каждого события, но также гарантирует, что я потеряю максимум 30 секунд данных. Вы также можете добавить отправку в событие unload, что увеличит объем получаемых вами данных, но вы не будете зависеть от этого.
Некоторые примеры того, как я бы это реализовал (используя jQuery, так как мои ванильные навыки JS немного устарели):
$(function() {
var clicks = [];
// Capture every click
$().click(function(e) {
clicks.push(e.pageX+','+e.pageY);
});
// Function to send clicks to server
var sendClicks = function() {
// Clicks will be in format 'x1,y1;x2,y2;x3,y3...'
var clicksToSend = clicks.join(';');
clicks = [];
$.ajax({
url: 'handler.php',
type: 'POST',
data: {
clicks: clicksToSend
}
});
}
// Send clicks every 30 seconds and on page leave
setInterval(sendClicks, 30000);
$(window).unload(sendClicks);
});
Обратите внимание, что я не проверял и не пытался это каким-либо образом, но это должно дать вам общее представление.