javascript - 检查鼠标点击
问题描述
此代码应检查鼠标位置,如果鼠标单击在控制台中显示此位置X
,Y
但它会忽略单击事件并在控制台中打印没有单击的鼠标坐标。
我该如何解决?
function getMousePos(canvas, evt) {
var rect = canvas.getBoundingClientRect();
return {
x: evt.clientX - rect.left,
y: evt.clientY - rect.top
};
}
canvas.addEventListener('mousemove', function(evt) {
var mousePos = getMousePos(canvas, evt);
canvas.addEventListener("click", check(mousePos.x,mousePos.y));
}, false);
function check(x,y){
console.log(x);
}
解决方案
在这种情况下,最好避免嵌套eventListeners
。
您也可以将光标位置存储为canvas.mouse
属性:
var canvas = document.querySelector('canvas');
canvas.addEventListener('mousemove', getMousePos);
canvas.addEventListener("click", check);
function getMousePos(evt) {
var rect = canvas.getBoundingClientRect();
canvas.mouse = {
x: evt.clientX - rect.left,
y: evt.clientY - rect.top
};
}
function check() {
console.log(canvas.mouse.x);
}
canvas {
width: 200px;
height: 200px;
background: #ddd
}
<canvas></canvas>
推荐阅读
- json - 如何检索、比较和验证 Postman 中返回的值?
- prometheus - 范围向量上的 PromQL avg()
- node.js - 如何让 ms 团队 bot 处理消息卡操作的有效负载
- python - 我无法在树莓派上下载 scipy for python
- java - 如何在响应中返回无限字段以获取完整的 Web 服务
- function - 定义一个 XLISP 函数 rev-rest,它反转除了列表的第一个元素之外的所有元素
- javascript - 将工作函数插入 setTimeout 调用时发生 TypeError
- c# - Debug.Log 在 Unity 中被延迟
- c - 我如何一起使用 enum 和 argv?
- php - 转换为 mysqli,现在我的图表不会在 HighCharts 上绘制