2013-02-01 149 views
17

可能重複:
Mouse position relative to div
getting mouse position with javascript within canvas在div中獲取鼠標位置?

我怎樣才能得到一個畫布大小是固定的,但有一個自動內緣鼠標的位置?

我不能使其位置固定,不能只使用頁面上的常規鼠標位置。

此代碼的工作完美:

mouseX = e.pageX - div.offsetLeft; 
mouseY = e.pageY - div.offsetTop; 
+0

谷歌是你的朋友 - http://api.jquery.com/mousemove/ –

+1

請張貼一些示例代碼爲[的jsfiddle(HTTP:/ /jsfiddle.net/)或另一個喜歡它,如果你有一個特定的問題來檢查。 – oomlaut

+0

請不要刪除重複的鏈接;評論者仍然希望看到你的問題被關閉*爲*。 –

回答

19

使用jQuery:

var divPos = {}; 
var offset = $("#divid").offset(); 
$(document).mousemove(function(e){ 
    divPos = { 
     left: e.pageX - offset.left, 
     top: e.pageY - offset.top 
    }; 
}); 
+36

怎麼樣不使用jQuery – bryan

+0

@bryan - 我確信它可以在沒有jQuery的情況下完成,但它會非常複雜 – PitaJ

+0

MDN說'pageX'不是標準的,不應該使用。 https://developer.mozilla.org/en-US/docs/Web/API/UIEvent/pageX我在使用foreignObject時遇到了一些麻煩。 – Charles

-1

從jQuery的網站摘自:Jquery Tutorial site

$(document).mousemove(function(e){ 
     $('#status').html(e.pageX +', '+ e.pageY); 
    }); 

注:固定的語法

+0

爲什麼這標誌着下來? –

+0

因爲'pageX'和'pageY'不是相對於容器。 – dmackerman

+3

我們得到它,這個答案是沒有用的,沒有必要保持downvoting它! – Sheljohn

2

使用event.layerXevent.layerY獲得相對於當前元素的鼠標位置:

$('#canvas').mousemove(function(e){ 
    var mousePos = {'x': e.layerX, 'y': e.layerY}; 
}); 
+0

這是一個很酷的。功能,太糟糕了它的過時 – blex

+0

@blex它不會被棄用,這是不規範:https://developer.mozilla.org/en-US/docs/Web/API/UIEvent/layerX – DevAntoine

+0

還應該提到這由於Layer的定義可能會導致一些嚴重問題通過簡單的手腕輕輕地改變,從而改變layerX和layerY。 – JosephMCasey