首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >onMouseMove获取鼠标位置

onMouseMove获取鼠标位置
EN

Stack Overflow用户
提问于 2010-06-10 11:19:17
回答 4查看 91.8K关注 0票数 20

在Javascript中,在onMouseMove的Javascript事件处理程序中,如何获得相对于页面顶部的x,y坐标中的鼠标位置?

EN

回答 4

Stack Overflow用户

发布于 2010-06-10 11:34:32

如果您可以使用jQuery,那么this将提供帮助:

代码语言:javascript
复制
<div id="divA" style="width:100px;height:100px;clear:both;"></div>
<span></span><span></span>
<script>
    $("#divA").mousemove(function(e){
      var pageCoords = "( " + e.pageX + ", " + e.pageY + " )";
      var clientCoords = "( " + e.clientX + ", " + e.clientY + " )";
      $("span:first").text("( e.pageX, e.pageY ) - " + pageCoords);
      $("span:last").text("( e.clientX, e.clientY ) - " + clientCoords);
    });

</script>

下面是纯javascript的例子:

代码语言:javascript
复制
var tempX = 0;
  var tempY = 0;

  function getMouseXY(e) {
    if (IE) { // grab the x-y pos.s if browser is IE
      tempX = event.clientX + document.body.scrollLeft;
      tempY = event.clientY + document.body.scrollTop;
    }
    else {  // grab the x-y pos.s if browser is NS
      tempX = e.pageX;
      tempY = e.pageY;
    }  

    if (tempX < 0){tempX = 0;}
    if (tempY < 0){tempY = 0;}  

    document.Show.MouseX.value = tempX;//MouseX is textbox
    document.Show.MouseY.value = tempY;//MouseY is textbox

    return true;
  }
票数 28
EN

Stack Overflow用户

发布于 2016-11-26 00:26:14

这在所有浏览器中都是尝试和工作的:

代码语言:javascript
复制
function getMousePos(e) {
    return {x:e.clientX,y:e.clientY};
}

现在您可以在如下所示的事件中使用它:

代码语言:javascript
复制
document.onmousemove=function(e) {
    var mousecoords = getMousePos(e);
    alert(mousecoords.x);alert(mousecoords.y);
};

注意:上面的函数将返回鼠标相对于视区的坐标,不受滚动的影响。如果你想得到包括滚动在内的坐标,那么使用下面的函数。

代码语言:javascript
复制
function getMousePos(e) {
    return {
        x: e.clientX + document.body.scrollLeft,
        y: e.clientY + document.body.scrollTop
    };
}
票数 7
EN

Stack Overflow用户

发布于 2013-02-28 06:03:17

仅仅使用d3.js来查找鼠标坐标可能有点夸张,但是它们有一个非常有用的函数,叫做d3.mouse(*container*)。下面是一个做你想做的事情的例子:

代码语言:javascript
复制
var coordinates = [0,0];
d3.select('html') // Selects the 'html' element
  .on('mousemove', function()
    {
      coordinates = d3.mouse(this); // Gets the mouse coordinates with respect to
                                    // the top of the page (because I selected
                                    // 'html')
    });

在上面的例子中,x坐标是coordinates[0],y坐标是coordinates[1]。这非常方便,因为您可以通过将'html'与标签(例如'body')、类名(例如'.class_name')或id (例如'#element_id')交换来获得与任何容器相关的鼠标坐标。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3011418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档