2012-05-22 52 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),有点旧,但是它“解释”了这个问题)。 –