最近幾天一直在嘲笑我的另一個問題。正如你可能從我的其他問題中看到的,我正在創建一些思維導圖軟件。所以(非常簡化)我有兩個div。一個是頁面上的正方形,另一個是div的內容,大約是可拖動的10倍。這樣,對象可以放在屏幕上,然後稍微移動到另一個對象被添加等。我通過創建外部div滾動來做到這一點。在滾動div中獲取鼠標位置
我遇到的問題是在java腳本中的鼠標位置。如果我在div中的任何位置獲得鼠標位置,它將不會是正確的,因爲我將內部div的一半大小偏移到頂部和左側(因此用戶正在查看畫布的中間並可以以任何他們喜歡的方式) 。我已經嘗試了幾十種不同的鼠標座標功能,但這些功能似乎都不起作用。這應該是我的地方在網上找到了跨瀏覽器的一個例子是:
function getMouse(e) {
var posx;
var posy;
if (!e) var e = window.event;
if (e.pageX || e.pageY) {
posx = e.pageX;
posy = e.pageY;
}
else if (e.clientX || e.clientY) {
posx = e.clientX + document.body.scrollLeft + document.getElementById("canvas").scrollLeft;
posy = e.clientY + document.body.scrollTop + document.getElementById("canvas").scrollTop;
}
} //getMouse
但是,即使這是行不通的。我幾乎可以肯定,這個錯誤是因爲我的內部div是可拖動的。希望我已經做出了一些解釋,但如果我沒有試圖證明我有這種情況(儘管這裏沒有完成鼠標點擊,純粹是爲了展示我的div結構)。在產品中,我讓用戶雙擊畫布並出現一個新的對象,因此鼠標座標爲什麼需要正確。
我希望有人能幫助我。
在此先感謝。
編輯:無法提及,對於我的應用程序的一部分,我使用JQuery,所以無論有沒有JQuery的解決方案都可以。再次感謝。
我注意到,你的小提琴是使用jQuery。既然你沒有在這裏提到它,你會使用jQuery作爲你的解決方案的一部分嗎?相對於畫布或文檔,您期望的鼠標座標是什麼? – Nimrod 2011-02-11 00:10:24
那麼,如果它可以在jQuery中更容易完成,那就可以了......兩種解決方案都很好......我會盡快更新帖子。我需要相對於內部div的位置,即jsfiddle中的#canvas。謝謝。 – 2011-02-11 00:16:41