2010-03-23 39 views
0

我在Ajaxian上发现了这个片段,但我似乎无法使用cursor.y(或cursor.x)作为变量,并且当函数被调用为这似乎并不奏效。是否有语法问题或其他问题?在没有jQuery的情况下获得javascript相对于网站的鼠标位置并没有jQuery

function getPosition(e) { 
    e = e || window.event; 
    var cursor = {x:0, y:0}; 
    if (e.pageX || e.pageY) { 
     cursor.x = e.pageX; 
     cursor.y = e.pageY; 
    } 
    else { 
     cursor.x = e.clientX + 
     (document.documentElement.scrollLeft || 
     document.body.scrollLeft) - 
     document.documentElement.clientLeft; 
     cursor.y = e.clientY + 
     (document.documentElement.scrollTop || 
     document.body.scrollTop) - 
     document.documentElement.clientTop; 
    } 
    return cursor; 
} 

我preffer如果可以不使用jQuery UI,因为我一直thaught jQuery和图书馆的作为有点大多数JS编程矫枉过正。

+3

万岁!其实还有另外一个不喜欢JS库的人= D – Chibu 2010-03-23 14:57:01

+0

'如果可能的话'我不想用jQuery' ......你无法想象你错过了什么。请注意,jQuery不同于jQuery UI。 – SLaks 2010-03-23 15:01:22

+1

似乎你可能患有NIH综合征http://en.wikipedia.org/wiki/Not_Invented_Here。 (大多数)有经验的开发人员认识到好的库的效用,并在指出时利用它们。在这种特殊情况下,你只是为自己做更多的工作,而不是你知道的。祝你好运。 – 2010-03-23 15:04:34

回答

0

这段代码必须在鼠标事件处理程序中用处理程序中的事件对象调用。

+0

是的,我这样称呼它 onclick =“getPosition(e); anotherfunct();” (是的,变量在另一个函数内使用() – Constructor 2010-03-23 15:02:23

+0

您需要传递'event',而不是'e'。另外,如何将返回值传递给'anotherfunc'? – SLaks 2010-03-23 15:04:22

+0

示例:mouseposx = cursor.x – Constructor 2010-03-23 15:06:06

1

这一直是difficult to achieve cross-browser,但是这是一样好,你可以得到...

<!DOCTYPE html> 
<html> 
    <head> 
    <title>Javascript Test</title> 
    <script type="text/javascript"> 
     window.onload = function() { 
     document.onmousemove = function(e) { 
      if(!e) e = window.event; 

      if(e.pageX == null && e.clientX != null) { 
      var doc = document.documentElement, body = document.body; 

      e.pageX = e.clientX 
        + (doc && doc.scrollLeft || body && body.scrollLeft || 0) 
        - (doc.clientLeft || 0); 

      e.pageY = e.clientY 
        + (doc && doc.scrollTop || body && body.scrollTop || 0) 
        - (doc.clientTop || 0); 
      } 

      document.getElementById("pos").innerHTML = e.pageX + ", " + e.pageY; 
     } 
     } 
    </script> 
    </head> 
    <body> 
    <h1>Position: <span id="pos">0, 0</span></h1> 
    </body> 
</html> 
+1

对于它的价值,这是jQuery如何做到的 – 2010-03-23 15:08:29

0

// //编辑万一我误解你不能在JavaScript设置鼠标的物理位置。

所以我在这里找到了一种答案,所以我将简单地链接到它用于研究目的。 Show mouse x and y position with javascript

已编辑----希望分享对我有用的东西。

这是我在上面的链接找到的代码的一种形式,我稍微改变了。好像我必须把某些东西放在window.onload上。

window.onload = function() { 
       IE = (navigator.appName == "Microsoft Internet Explorer") ? true : false; 


    if (!IE) { 
       document.captureEvents(Event.MOUSEMOVE); 
       document.captureEvents(Event.MOUSEDOWN); 
    } 
       document.onmousemove = function (e) {mousePos(e);}; 

       document.onmousedown = function (e) {mouseClicked();}; 
}; 


      var mouseClick; 
      var keyClicked; 
      var mouseX = 0; 
      var mouseY = 0; 

function mousePos (e) { 
    if (!IE) { 
       mouseX = e.pageX; 
       mouseY = e.pageY; 
    }else{ 
       mouseX = event.clientX + document.body.scrollLeft; 
       mouseY = event.clientY + document.body.scrollTop; 
    } 
       return true; 
} 
相关问题