2009-05-20 34 views
8

Mozilla firefox 3.x在收聽「ondrag」事件時似乎有bug。事件對象不報告正在拖動的對象的位置,clientX,clientY和其他屏幕偏移全部設置爲零。這是很有問題的,因爲我想根據被拖動的元素創建一個代理元素,當然,clientX和clientY調整它的位置。如何讓我的clientX和clientY在Firefox的「拖動」事件處理程序中工作?

我知道,有身邊有這樣清涼的東西,在HTML5 setDragImage但我想提供瀏覽器之間的本地DD一個通用的抽象。

故障代碼:

document.addEventListener('drag', function(e) { 
    console.log(e.clientX); // always Zero 
}, false); 

注:在拖動時事端 此問題不會對其他事件(的dragstart,的dragover)和鼠標移動事件的發生不能捕獲。

請幫忙!

+0

對於您留下的評論+1。你可以使用José提供的答案。只要我有一點時間,我也會盡力找出與此相關的事情。 – Kirtan 2009-05-20 13:01:48

+0

我找到了一個解決方案,我在文檔級別的「dragover」事件中放置了一個監聽器,現在我得到了可以通過全局共享對象公開的正確X和Y屬性。 – 2009-05-20 13:23:14

回答

16

我找到了解決辦法,我已經放在一個聽衆對「的dragover」事件在文檔級別,現在我得到我可以通過全球共享對象暴露右X和Y屬性。

1

在HTML 5中的拖動事件是不是在今天的瀏覽器功能齊全。爲了模擬拖拽的情況,你應該使用:

  1. 添加一個onmousedown事件,設置var true。
  2. 添加一個onmouseup事件,將該var設置爲false。
  3. 添加的OnMouseMove事件,檢查是否該變種是真實的,如果是,根據座標移動你的股利。

這總是爲我工作。如果您遇到任何問題,請再次聯繫,我可以提供一些示例。

祝你好運!

0

我知道,有很酷的東西圍繞 如setDragImage在HTML5,但我 想爲瀏覽器之間的本地DD提供一個通用的抽象 。

但是,爲什麼做這樣的事情,是不是有庫,例如JQuery & Prototype可以跨瀏覽器拖放&下降?

或者,如果你想實現自己的DD庫一樣,你可以把他們的方法幫助或擴展它們,因爲這兩個庫下面的面向對象的範例。

這樣可以節省很多時間。

相關問題