HTML5 画布鼠标侦听器坐标未定义
HTML5 Canvas Mouse Listener Coordinates Undefined
我试图从鼠标侦听器获取鼠标坐标,但它们未定义。鼠标侦听器正在添加到画布中,侦听器正在触发 onMouseMove 函数,但是正在传递的事件似乎没有任何定义的鼠标位置的 x 或 y 坐标。
我尝试了以下变量:event.pageX,event.pageY,event.clientX,event.clientY,event.x,event.y
关于我错误地做什么导致鼠标坐标未定义的任何想法?感谢您的任何帮助!
<script>
var boxes;
var canvas;
var context;
$(document).ready(function() {
canvas = document.getElementById("requirement_tree");
context = canvas.getContext("2d");
// Add mouse listener
canvas.addEventListener("mousemove", onMouseMove, false);
});
// Get the current position of the mouse within the provided canvas
function getMousePos(event) {
var rect = canvas.getBoundingClientRect();
if (event.pageX != undefined && event.pageY != undefined) {
x = event.pageX;
y = event.pageY;
} else {
x = event.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
y = event.clientY + document.body.scrollTop + document.documentElement.scrollTop;
}
console.log("X:" + x);
console.log("Y:" + y);
return {
X: x - rect.left,
Y: y - rect.top
};
}
function onMouseMove(event) {
var mousePos = getMousePos(canvas, event);
var message = 'Mouse position: ' + mousePos.X + ',' + mousePos.Y;
context.font = '10pt Arial'
context.fillStyle = 'black';
context.textAlign = 'left';
context.clearRect(0, 0, 200, 200);
context.fillText(message, 100, 100);
}
</script>
至少,鼠标移动事件的处理程序出错。在处理程序的第二个参数中传输的事件对象。
// ...
// Get the current position of the mouse within the provided canvas
function getMousePos(element, event) {
var rect = canvas.getBoundingClientRect();
// ...
相关文章:
- Highslide(iframe的侦听器)
- 如何在for循环中添加事件侦听器
- 选项卡侦听器未被来自后台脚本的消息激活
- 未命中服务器发送的事件侦听器
- 如何覆盖原型中的事件侦听器
- 加载侦听器上的函数触发得太早
- 无法将事件侦听器附加到画布
- 如何在d3.js中自定义事件侦听器
- 在es6中,将带有回调的事件侦听器设置为可迭代的
- 事件侦听器未在chrome扩展中的options.js中启动
- IE8更改文本区域上的事件侦听器不工作
- 将事件侦听器添加到文档,而不是签入元素存在,然后添加事件侦听器
- jQuery将侦听器的大小调整为只触发宽度的变化
- javascript删除事件侦听器
- 我应该/如何清除mousemove JQuery事件侦听器
- 在JQuery中使用谷歌地图Api事件/侦听器
- 如何在侦听器之后添加可拖动功能
- 如果侦听器附加到父元素,是否可以区分单击发生在哪个子元素上
- 谷歌地图:获取点击或标记(x,y)像素坐标内的标记点击侦听器
- HTML5 画布鼠标侦听器坐标未定义