没有 Jquery 的 Canvas 上的鼠标坐标
我目前正在使用:
e.pageX - $("#canvas").offset().left
这是我使用 Jquery 的唯一目的,所以我更愿意仅使用 javascript 重写它。
我可以用什么来代替这个?
I am currently using:
e.pageX - $("#canvas").offset().left
This is the only thing I am using Jquery for, so I would prefer to re-write this using just javascript.
What can I use to replace this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
N Rohler 提供的答案仅在 Internet Explorer 中运行良好(IE8 之前有一些错误 - 但我想这对你来说不会成为问题,因为你使用的是画布和 pageX),并且在 Opera 中如果填充是0,在 Safari/Chrome 中,如果边框宽度也为 0。不幸的是,在 Firefox 中,offsetX 和 offsetY 未定义。
http://www.quirksmode.org/dom/w3c_cssom.html#mousepos
Kaninepete,为了简单起见,我认为您应该重新考虑获取相对于画布元素的鼠标坐标的方式。您所要做的就是计算画布的位置,这是使用 .getBoundingClientRect() 的一个非常简单的任务(另外,如果需要,不要忘记添加滚动偏移量),然后从 pageX 和 pageY 中减去它。
The answer provided by N Rohler works well only in Internet Explorer (with some bugs prior to IE8 - but I guess it won't be a problem for you since you're using a canvas and pageX), and in Opera if the padding is 0, and in Safari/Chrome if the border width is 0 too. In Firefox, unfortunately, offsetX and offsetY are undefined.
http://www.quirksmode.org/dom/w3c_cssom.html#mousepos
Kaninepete, I think you should reconsider, for the sake of simplicity, the way of getting the mouse coordinates relatively to your canvas element. All you have to do is to calculate the position of the canvas, which is a pretty simple task using .getBoundingClientRect() (also, don't forget to add scroll offsets if necessary), and subtract it from pageX and pageY.
(再次)更新以实现(正确的)Firefox 兼容性:
Updated (again) for (correct) Firefox compatibility:
您可以用下面的代码替换它
You can replace it by the below code