javascript - 如何检查1秒内是否触发了mousemove事件

标签 javascript html css canvas

我有一个 canvas 元素和一个 div.coordinates 元素,当鼠标在 Canvas 上移动时它们会跟随鼠标移动。如果鼠标在最后 1 秒内没有在 Canvas 上移动,我想要做的是让 .coordinates 消失。

HTML

<canvas></canvas>

CSS

canvas {
  max-width: auto;
  outline: 1px solid #283028;
  align-self: center;
}

.coordinates {
  top: 50px;
  position: absolute;
  height: 40px;
  width: 60px;
  background-color: rgba(20, 20, 20, 0.3);
  border-radius: 10px;
  display: none;
}

JS


let coordinates = document.createElement("div");
coordinates.className = "coordinates";


let time = undefined;
const trackCanvasMouse = (e) => {
  if (!time) {
    time = Date.now();
  }
  setTimeout(() => {
    if (time == Date.now()) {
      coordinates.style.display = "none";
      time = undefined;
    }
  }, 1000);
  coordinates.style.top = `${e.clientY}px`;
  coordinates.style.left = `${e.clientX}px`;
  coordinates.style.display = "inline";
};

const canvas = document.querySelector("canvas");
canvas.addEventListener("mousemove", trackCanvasMouse);

canvas.width = 520;
canvas.height = 520;


document.querySelector("body").appendChild(coordinates);

我尝试使用 Time.now()setTimeout 来查看事件是否已被触发,但无法使其工作。

谢谢你的时间

最佳答案

这将在鼠标移动时显示跨度坐标,并在鼠标停止一秒钟后消失。您要做的是跟踪之前的超时并在每次触发 mousemove 事件时取消它。

let timeout;
const coords = document.getElementById('coords');
document.addEventListener("mousemove", function() {
  coords.style.display = "block";
  if (timeout) {
    clearTimeout(timeout);
  }
  timeout = setTimeout(function() {
    coords.style.display = "none";
  }, 1000)
});
#coords {
  display: none;
}
<span id="coords">Coords</span>

关于javascript - 如何检查1秒内是否触发了mousemove事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55944270/

相关文章:

javascript - 在 JS 中超过 700 毫秒的 800 万次迭代可以吗?如何加速?

javascript - 按键事件未记录第一个按键

javascript - 当用户使用 Javascript 在外部单击时关闭下拉菜单

html - 赋予 CSS 属性最高优先级

javascript - 如何使用 Firebase (JavaScript) 将键设置为变量的值

html - 为什么 Google 主页使用已弃用的 HTML(即无效的 HTML5)?

javascript - 如何在更新卡片的弹出窗口中获取 2 个 div 值。

javascript - angularJs - 在用户在搜索字段中输入之前不会显示数据

javascript - 将 Ajax div 内容存储在 PHP 变量中

javascript - 将 "click outside of menu to close"jQuery/Javascript 添加到具有 .toggle() 的菜单下拉菜单