2012-05-22 78 views
1

因爲一個演示是值得72.814話:http://jsfiddle.net/rudiedirkx/J575b/3/show/(拖N)文件拖放在Firefox

這是最簡單的演示。三個事件:拖動,拖動和放下。 overleave按預期工作(該課程已添加並刪除)。然而,下降不!

就像IE一樣,它會在窗口中打開掉落的文件。在Chrome中,事件取消並拖放文件被刪除(在這種情況下被忽略)。

在Firefox中甚至沒有觸發drop事件!

發生了什麼事?我覺得這個工作......(它確實在Chrome它不能在Opera 11.64。)

編輯

固定,感謝阿德里亞諾:http://jsfiddle.net/rudiedirkx/J575b/5/show/

回答

2

更改ondragover處理程序爲此:

drop.ondragover = function() { 
    this.classList.add('over'); 
    return false; 
}; 

注意return false線,從Mozilla.org需要preventDefault()或從函數返回一個錯誤的值以允許丟棄。

+0

哇。那太簡單了。我閱讀https://developer.mozilla.org/en/DragDrop/Drag_and_Drop,但不是你建議的那個。愚蠢的谷歌;) – Rudie

+0

謝謝,這讓我瘋狂的這個中午:)。直到我用ondragover取代ondragenter之後,ondrop才被解僱。 FF上的這些事件有什麼區別?他們都在Chrome上運行良好。 –

+0

@Tiendq拖放需要「確認」你正在拖動的對象(它將被刪除)可以被處理。好的API不是你能在規範中看到的最好的東西(看看[這篇文章](http://www.quirksmode.org/blog/archives/2009/09/the_html5_drag.html),有點舊,但是它「解釋」了這個問題)。 –