如何在’drop`事件后停止重定向?

将文件放入Firefox中的div后,网页将被重定向到此文件。 我试图在drop handler中使用jQuery的e.preventDefault()来阻止这种传播,但是失败了。

看到这个演示 ,将文件放入#test不会重定向网页,但是进入#test1会,我想知道原因。 我是否应该始终将处理程序绑定到dragenterdragoverdragleavedrop以防止drop后传播?

更新:

我在html5doctor上找到了一些提示:

要告诉浏览器我们可以放入这个元素,我们所要做的就是取消dragover事件。 但是,由于IE的行为不同,我们需要为dragenter事件做同样的事情。

而Mozilla 声称 :

dragenterdragover事件的监听器用于指示有效的放置目标,即拖放项目可能被丢弃的位置。

但我在firefox上测试了这个演示 , #test1工作和#test1没有,似乎Mozilla犯了一个错误,而html5doctor是对的:Firefox需要dragover才能让drop工作。

需要在Google ChromeSafari中取消ondrop事件才能启动ondrop事件。

我注意到取消onDragOver还不够,但我还必须取消onDragDrop和onDragLeave。 下面,我将显示日志记录,指示用户正在执行的操作:

  

然后你的元素……

 

Drag something here!