2009-04-08 89 views
2

如果被遮蔽,我可以獲得一個對象。我可以在任何給定的時間獲得鼠標的座標。我如何獲得一個物體的座標 - 如果它們與鼠標不同?提高javascript事件或從XY座標系獲取對象

本質上,用戶在屏幕上的某個位置放置div。由於div比鼠標光標寬,我需要知道div的角落結束了哪些對象(而不是鼠標結束了什麼)。有沒有辦法在JS中引發mousemove事件 - 將座標傳遞給它?
感謝


只是一個快速後腳本爲他人誰讀這篇文章。雖然我沒有選擇jquery作爲我的答案,但它可能是您的答案。這似乎是我們想要提供的許多客戶端工具非常靈活的功能豐富的解決方案。

回答

1

有沒有辦法提出一個鼠標移動,並有它填補了造成目標元素的屬性,沒有。

有一種方法可以從任意座標中獲取元素,但是您不會太喜歡它。它涉及遍歷每個頁面元素並計算其維度(來自offsetLeft/Top/Parent)以及哪些元素覆蓋哪些其他元素(來自計算樣式的'position'和'z-index')......實質上重新實現瀏覽器自帶的腳本佈局引擎。如果你有元素的'溢出'滾動/自動你有更多的計算要做。

如果你有一個有限的情況(例如,你只能將div放在一組其他靜態位置的div中),它可以被管理,但是一般情況下很難,而且沒有任何樂趣。 (也許有人在某個地方將這樣的功能打包到庫或框架插件中,但我還沒有遇到過)

如果您可以找到另一種方法使您的拖放功能很好地執行,要求你這樣做,然後做!

+0

我很害怕這個。它看起來像jQuery可能是'那個'庫。當我找到時我會進一步發帖。 – Praesagus 2009-04-09 00:46:30

1

不直接回答你的問題,但你有沒有嘗試過使用JavaScript庫,如jQuery UI?它提供了很好的拖放支持,你可以做各種你在談論的事情...例如。您可以使頁面的某些元素可拖動& &然後在用戶拖動元素時處理事件。它提供了包括'touch'(以及'fit','intersect','pointer')在內的容器的容差,這樣你就可以處理你可以放棄的目標的'over'事件處理器,當你的div的角落超過給定的元素時觸發。此事件處理程序爲您提供了對被拖動的元素以及被拖動的元素的引用。 (稍微回顧一下你如何問這個問題,但應該可以用來解決相同的問題)。

希望這是一些幫助......

+0

這可能是我的解決方案,我會研究它,如果是的話,選擇你的答案。 – Praesagus 2009-04-09 00:45:39

0

要從它的座標中獲取對象,有document.elementFromPoint(x,y)。 Quirksmode的compatibility table顯示它在最新的瀏覽器中可用。