#javascript #html #jquery #css
Вопрос:
Я неопытный программист. Я разработал следующий скрипт для отслеживания положения курсора мыши, соответствующего времени перемещения и номера события. Позже я хочу проанализировать взаимодействие пользователей с различными HTML-элементами (таблицами, разделами, кнопками и т.д.) На упрощенном веб-сайте.
Я хочу, чтобы генерировать данные, которые не искажаются увеличением в нашей функции уменьшения масштаба браузера. Я разработал другие сценарии,которые генерировали различные координаты X, Y для HTML-элементов на основе функции увеличения или уменьшения масштаба.
Поэтому у меня возникла идея измерить относительное положение курсора мыши. В частности, я хотел измерить положение курсора относительно div-элемента с помощью getBoundingClientRect(). Однако теперь я получаю координаты мыши относительно HTML-элемента, на котором расположен курсор (см. Фрагмент кода).
У кого-нибудь есть идея, как изменить сценарий? Моя цель-проанализировать, как долго и как часто пользователь наводил курсор мыши на HTML-элемент или рядом с ним (например, на кнопку, таблицу или изображение).
var mouse_time;
var mouse_counter = 0;
var mouse_pos_x;
var mouse_pos_y;
var mouse_event = {};
var timesPerSecond = 5;
var wait = false;
var div_element = document.getElementById('tracking')
div_element.addEventListener("mousemove", mouse_tracking, false)
function mouse_tracking(d) {
if (!wait) {
mouse_time = Date.now();
mouse_counter ;
var rect = d.target.getBoundingClientRect();
mouse_pos_x = Math.floor(d.clientX - rect.left);
mouse_pos_y = Math.floor(d.clientY - rect.top);
mouse_event = {
mouse_counter: mouse_counter,
mouse_time: mouse_time,
mouse_pos_x: mouse_pos_x,
mouse_pos_y: mouse_pos_y,
};
document.getElementById('show').innerHTML = ('Position X ' mouse_pos_x ' Position Y ' mouse_pos_y);
console.log(mouse_event);
wait = true;
setTimeout(function() {
wait = false;
}, 1000 / timesPerSecond);
}
}
#tracking {
height: 200px;
width: 200px;
background-color: lightgreen;
}
#other_content {
margin: 0 auto;
background-color: lightpink;
height: 80px;
width: 80px;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Mouse Tracking</title>
</head>
<body>
<div id="tracking">
<div id="other_content">Other content</div>
</div>
<p id="show"></p>
</body>
</html>