2010-03-23 79 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; 
} 
相關問題