如何从主体上的onClick事件获得鼠标单击的绝对位置
How do I get the absolute position of a mouse click from an onClick event on the body?
我试图获得鼠标点击相对于浏览器/正文的绝对位置(顶部和左侧),而不是正文内的任何父元素。
我有一个绑定到body的侦听器,但是e.pageX和e.pageY给我的是相对于div的位置。
注意,我可以利用jQuery和YUI函数。
当前不能正常工作的代码:
//getting the position
function _handleClick(e) {
var data = { absX: e.pageX, absY: e.pageY};
_logClickData(data);
}
//binding the function
var methods = {
init: function () {
$("body").click(_handleClick);
}
};
评论者是正确的。pageX和pageY给你鼠标相对于整个文档的位置,而不是它的父div。但是如果你感兴趣,你可以从相对于div的位置获得相对于文档的位置。
获取父div相对于body的位置,然后将这两个值相加。
x = parentdiv.style.left + e.pageX;
y = parentdiv.style.top + e.pageY;
(0,0)
_____________________
|
|
| __________
|----100----| |
| |---60---* |
| |__________|
|
|
* = Mouse Pointer
我画这个图是因为它很有趣。不是因为我觉得你需要一个!!
同样,为了使上述工作,您可能需要parseInt.
根据这个(http://docs.jquery.com/Tutorials:Mouse_Position),这些应该给你的绝对位置。offsetX/Y
给出相对位置
编辑2013年11月:原来的"鼠标位置"链接似乎被打破了,但pageX
的文档包含一个使用jQuery pageX
/Y
的例子。关于offset
方法的页面也包含了相关的示例。
如果我没理解错你的问题,这就是解决办法
$("body").click(function(e){
var parentOffset = $(this).offset();
var relX = e.pageX - parentOffset.left;
var relY = e.pageY - parentOffset.top;
window.alert(relX);
window.alert(relY);
});
我猜你可以使用window.pageXOffset
, window.pageYOffset
属性
document.body.addEventListener('click',(e)=>{
console.log(e.clientX + window.pageXOffset, event.clientY + window.pageYOffset)
}
)
@Mrchief的http://docs.jquery.com/Tutorials:Mouse_Position链接暗示的解决方案是绑定到文档而不是body元素。
//binding the function
var methods = {
init: function () {
$(document).click(_handleClick);
}
};
相关文章:
- 用鼠标单击对象,使画布对象消失
- 如何在鼠标单击时更改KML多边形的颜色
- 禁用鼠标单击网格,当 ext.window 打开 extjs 3
- 角度 js - 如何用鼠标单击,然后在 ng-grid 上按 Enter 键
- 鼠标单击对象统一 5.3 UI
- 未在 jquery 中通过手动鼠标单击注册单击
- Jquery在页面重定向后执行鼠标单击
- 使用Firefox bookmarklet在元素上触发鼠标单击
- 如何在使用鼠标单击动态绘制多边形时在画布中拖放多边形
- 中断所有鼠标按下事件以模拟鼠标单击
- 按回车键而不是鼠标单击(角度模态 - 附有 Plunker)
- 如何获取和设置鼠标单击x,y打开的pdf文档的位置
- 如何使用鼠标单击和拖动来放大 D3
- 使用 Jquery 在鼠标单击时反转表单元素的位置
- 检测在 JavaScript 中按住鼠标单击
- 在鼠标单击时添加标记并删除打开图层中现有的标记
- 禁用键并鼠标单击Mozilla中的iframe
- 如何在鼠标单击时设置可拖动事件
- 识别在闪光灯元件上的鼠标单击
- 在 JavaScript 中模拟鼠标单击按钮