JavaScript для захвата положения мыши после каждого заданного интервала
Язык JavaScript изначально создавался для веб-браузеров. С тех пор он развился и стал языком с множеством применений и платформ. Это позволяет нам взаимодействовать с браузером с помощью событий. События - это сигналы о том, что что-то произошло. Когда JavaScript используется на HTML-страницах, JavaScript может реагировать на эти события. Чтобы реагировать на события, мы можем назначить обработчик - функцию, которая запускается в случае события. Обработчики - это способ запуска кода JavaScript в случае действий пользователя.
В этой статье мы сосредоточимся на том, как фиксировать положение мыши на пустой HTML-странице за период времени 10 секунд в пределах заданного интервала времени. Изначально страница будет пустой. При первом щелчке запускается таймер на 10 секунд, а по окончании времени начала и X и Y-координаты положения мыши будут отображаться в форме объекта JavaScript.
Для этой задачи мы будем использовать следующие обработчики событий:
1. movemouse: когда курсор мыши перемещается.
2. DOMContentLoaded: когда HTML загружается и обрабатывается. DOM полностью построен.
Вот программа на JavaScript для того же:
< html > < head > < title >Timer Demo</ 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 var limit = 10000; // time interval of 500 millisecond set var throttle = 500; //timer is off initially var timerON = false; var start ; var last ; var 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(); var time = 10; // timer has started timerON = true; document.removeEventListener('click', clickEnvoke); document.addEventListener('mousemove', mouseUpdate); var 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) { var 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 () { var loadTime = (new Date).getTime(); document.addEventListener('click', clickEnvoke); }); </script> </ body > </ html > |
ПРИМЕЧАНИЕ. Мы должны продолжать перемещать курсор мыши при запуске таймера, иначе мы не сможем получить желаемое количество координат.
Мы узнаем о других обработчиках событий и связанных с ними проблемах в следующих статьях «Использование JavaScript для взаимодействия с браузером».