In this tutorial, we will see capturing mouse positions after every given interval in JavaScript.
On the first click, a timer of 5 seconds will start and on ending the start time and the X and Y-coordinates of mouse positions will be displayed in the form of a JavaScript object. The event handlers we will be using for this task will be:
- movemouse : When the cursor of the mouse is moved.
- DOMContentLoaded: When the HTML is loaded and processed. DOM is fully built. Here is the JavaScript program for the same.
Example :
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content=
"width=device-width, initial-scale=1.0">
<title>
JavaScript for Capturing Mouse Positions
After Every Given Interval
</title>
</head>
<body>
<div id="timer-section" style="text-align: center;">
Timer will appear here!
</div>
<div id="output-section"></div>
<script type="text/javascript">
// Timer
let limit = 10000;
// Time interval of 500 millisecond set
let throttle = 500;
// Timer is off initially
let timerON = false;
let start;
let last;
let mousePositions = [];
// Records the time when the timer starts
function makeTime(s) {
return s.getHours() + " : " + s.getMinutes()
+ " : " + s.getSeconds();
}
// When the first click to start the timer,
// this function will get envoked
function clickEnvoke() {
start = (new Date).getTime();
mousePositions.push({
time: {
start: makeTime(new Date())
}
});
console.log(mousePositions);
last = (new Date).getTime();
let time = 5;
// Timer has started
timerON = true;
document.removeEventListener('click', clickEnvoke);
document.addEventListener('mousemove', mouseUpdate);
let timer = setInterval(function () {
if (time >= 0)
document.getElementById('timer-section')
.innerHTML = time;
else {
// Mouse positions will be stop recording
// as timer is 0
timerON = false;
clearInterval(timer);
document.removeEventListener('mousemove', mouseUpdate);
// JSON data need to converted into
// string to print as object
document.getElementById('timer-section').innerHTML = "";
document.getElementById('timer-section').innerHTML +=
JSON.stringify(mousePositions);
}
time--;
}, 1000);
}
// Capturing mouse positions envoked
function mouseUpdate(event) {
let now = (new Date).getTime();
if (timerON) {
if (now - start > limit) {
return document.removeEventListener(
'mousemove', mouseUpdate);
}
if (now - last < throttle) {
return;
}
last = now;
mousePositions.push({
info: {
x: event.pageX,
y: event.pageY
}
});
}
else
console.log(mousePositions);
// Do whatever you want to do within your
// time limit here
}
// Initial HTML page is empty and DOM is loaded
// upon first click our functions will work
document.addEventListener('DOMContentLoaded', function () {
let loadTime = (new Date).getTime();
document.addEventListener('click', clickEnvoke);
});
</script>
</body>
</html>
Output:
![]()