jQuery鼠标位置相对于窗口的坐标

17

我想获取鼠标相对于窗口的精确位置。

这是我的问题...

  • document.height = 1600(实际文档大小)
  • window.height = 400(可视高度)

我需要确定鼠标相对于窗口的位置,而不是相对于页面的位置,而pageY属性提供的是相对于页面的位置。

这是为了一个大型工具提示,当鼠标悬停在表项上时弹出。如果屏幕底部没有足够的空间(窗口已最大化),则工具提示将显示在指针上方,否则将显示在指针下方。但是,当文档大小大于页面大小(长表格)时,就会出现问题。

谢谢, Luc

4个回答

35

很棒的解决方案,而且非常简单。楼主应该将其标记为解决方案。 - Russell Strauss
非常好的解决方案,谢谢。 如果有人像我一样需要从左下角开始定位,请参考:http://jsfiddle.net/nysbkuww/ - Chris

4

那么 window.pageYOffset 呢?

示例:

<html>
<head>
<style>
    html,body {padding:0;margin:0}
    #content {height:2048px;background-color:#ccc;}
    #status {position:fixed;top:0;left:0;}
</style>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type="text/javascript">
jQuery(document).ready(function(){
   $(document).mousemove(function(e){
      $('#status').html(e.pageX +', '+ (e.pageY - window.pageYOffset));
   }); 
})
</script>
<body>
<h2 id="status">0, 0</h2>
<div id="content"></div>
</body>
</html>

1
function showCoords(evt){
  alert(
    "clientX value: " + evt.clientX + "\n"
    + "clientY value: " + evt.clientY + "\n"
  );
}

我认为这正是您所寻找的。详细信息请参见 Mozilla Developer 这里


0

关于document.body.scrollTop属性,它包含了您已经滚动的像素。我相信一个简单的pageY - scrollTop就足够了吧?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接