-1

我目前正在嘗試編寫我自己的JS拖放腳本(出於絕對的好奇和無聊,我知道使用框架會更容易)。我的目標是一個全功能的FF3版本,IE可以等待現在。爲什麼我的自定義拖放腳本失敗?

我只是陷入了一個奇怪的錯誤。當我第一次拖動div時,它工作正常。當我第二次拖動它時,釋放按鈕後它不會粘住,我必須再次單擊才能將其關閉。第三,隨之而來的拖動再次完美無缺(!?!)。

請參閱[原始頁面] [1](正如我所說的,現在只是FireFox)瞭解發生了什麼。整個事情是用兩個事件(onmousedown和onmouseup)作爲div完成的,使用document.captureEvents(Event.MOUSEMOVE)進行中間移動。腳本可以在[這裏] [2]中找到(忽略底部的ajax部分,它爲一些額外的技巧做好了準備,並且如果我將它取出,bug仍然存在)。

如果您在過去遇到過類似情況,或者您在某處發現錯誤,請讓我知道。我知道可能有更好的方法來解決整個問題,但我特意尋找一種方法來使我的方法奏效。

感謝您的時間,

邁克

編輯:Chrome和Safari的工作。

編輯:把鏈接離線,在新版本上工作。

+0

只是爲了讓您知道它適用於Chrome。 – 2008-12-01 15:35:25

+0

哦,謝謝,沒有嘗試過。 Safari也適用。 – 2008-12-01 15:38:28

回答

2

首先,這對FF3中的我有用,如果這就是你要求的。

這不會是你想聽到的,但我強烈建議你從mootools或jquery或類似的地方拿起一個DnD方法。從效率的角度來看,DnD編碼起來是一件可怕的事情(我自己做過幾次),如果你沒有能力(這裏沒有任何意義)解決出現的大量錯誤,它將會是一個巨大的您的時間流失,而不是現成的強大的成熟實施。它一件很難做的事情。

如果你繼續做自己的代碼(作爲練習或出於自豪 - 我可以理解:))這種問題通常是事件沒有被捕獲的地方,你認爲它是因爲其他事件首先遇到了問題,標誌沒有被設置在你認爲的地方,或者(或者因爲)在意外的地方出現了代碼錯誤。通過註銷事件觸發器,嘗試並邏輯地跟蹤發生了什麼。

如果你可以定義如何它沒有更詳細的工作我可能能夠進一步追蹤它(因爲我似乎無法複製),但我建議你探索一個堅實的庫的好處。

相關問題