Я надеюсь отслеживать положение курсора мыши, периодически каждые мсек. Поэтому, по существу, когда страница загружается - этот трекер должен запускаться и, скажем, каждые 100 мс, я должен получить новое значение posX и posY и распечатать его в форме.
Я попробовал следующий код - но значения не обновляются - в полях формы отображаются только начальные значения posX и posY. Любые идеи о том, как я могу получить это и работает?
<html>
<head>
<title> Track Mouse </title>
<script type="text/javascript">
function mouse_position()
{
var e = window.event;
var posX = e.clientX;
var posY = e.clientY;
document.Form1.posx.value = posX;
document.Form1.posy.value = posY;
var t = setTimeout(mouse_position,100);
}
</script>
</head>
<body onload="mouse_position()">
<form name="Form1">
POSX: <input type="text" name="posx"><br>
POSY: <input type="text" name="posy"><br>
</form>
</body>
</html>
javascript
Хари
источник
источник
event
при повторном вызове функции не будет объекта. Вы, вероятно, должны слушать какое-то событие, чем использоватьsetTimeout
.window.event
будетundefined
илиnull
. Если нет события, нетevent
объекта.Ответы:
Положение мыши сообщается об
event
объекте, полученном обработчиком дляmousemove
события, которое вы можете прикрепить к окну (событие всплывает):(Обратите внимание, что тело этого
if
будет работать только на старом IE.)Пример вышесказанного в действии - он рисует точки, когда вы наводите курсор мыши на страницу. (Проверено на IE8, IE11, Firefox 30, Chrome 38.)
Если вам действительно нужно решение на основе таймера, вы комбинируете это с некоторыми переменными состояния:
Насколько я знаю, вы не можете получить положение мыши, не увидев событие, что, похоже, подтверждает этот ответ на другой вопрос переполнения стека .
Примечание : если вы собираетесь что-то делать каждые 100 мс (10 раз в секунду), постарайтесь ограничить фактическую обработку, которую вы выполняете в этой функции . Это большая работа для браузера, особенно старых Microsoft. Да, на современных компьютерах это не так много, но в браузерах многое происходит ... Так, например, вы можете отслеживать последнюю обработанную вами позицию и немедленно освобождать от обработчика, если позиция не изменилась. т изменилось.
источник
Вот решение, основанное на jQuery и слушателе событий мыши (что намного лучше, чем обычный опрос) на теле:
источник
Откройте консоль ( Ctrl+ Shift+ J), скопируйте и вставьте приведенный выше код и наведите курсор мыши на окно браузера.
источник
Я считаю, что мы думаем об этом,
источник
document.body.addEventListener("mousemove", function (e) {})
способ сделать это, в вашем коде JavaScript, в отличие от HTMLТо, что я думаю, что он хочет знать только позиции курсора X / Y, чем то, почему ответ такой сложный.
источник
Код на основе ES6:
Если вам нужно регулировать движение мышью, используйте это:
вот пример
источник
Независимо от браузера, ниже строки работали для получения правильного положения мыши.
event.clientX - event.currentTarget.getBoundingClientRect().left event.clientY - event.currentTarget.getBoundingClientRect().top
источник
Если вы хотите визуально отслеживать движение мыши:
источник
У меня недостаточно репутации, чтобы оставлять комментарии, но я взял превосходный ответ TJ Crowder и полностью определил код на таймере 100 мс . (Он оставил некоторые детали для воображения.)
Спасибо OP за вопрос, и TJ за ответ! Вы оба отличная помощь. Код встроен ниже как зеркало isbin.
источник
Вот комбинация двух требований: отслеживание положения мыши каждые 100 миллисекунд:
Это отслеживает и воздействует на положение мыши, но только каждый миллисекунд периода .
источник
Просто упрощенная версия @TJ Crowder и ответы @RegarBoy .
Меньше значит больше, на мой взгляд.
Проверьте событие onmousemove для получения дополнительной информации о событии.
Существует новое значение
posX
иposY
каждый раз, когда мышь движется в соответствии с горизонтальными и вертикальными координатами.источник