我正在收听drop
事件并正在执行e.preventDefault()
但它正在尝试打开已删除的文件。它一直工作到昨天。但就在今天它因某些未知原因而破产。我做了一个JsFiddle#bwquR/10
来反映相同的内容。
如果您不接受dragover
事件drop
,则无法处理。即使在小提琴中如果你评论dragover
它也行不通
在实际工作中,我错过了dragover
的拼写但如果没有drop
dragover
将无效
小提琴实际上是在工作,但是身体很小(只有文字DROP
)。它仅在drop
文本不在整个身体上的那个小区域上进行DROP
事件。所以我觉得它不起作用。抱歉混淆。
答案 0 :(得分:37)
我想这是因为没有dragOver事件处理程序,会使用dragOver事件的默认事件处理程序,因此,之后不会触发drop事件。在放置事件之前,需要e.preventDefault
用于dragOver事件。
答案 1 :(得分:4)
https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Drag_operations
如果要允许丢弃,则必须通过取消事件来阻止默认处理。您可以通过从属性定义的事件侦听器返回false,或者通过调用事件的event.preventDefault方法来执行此操作。后者在单独脚本中定义的函数中可能更可行。
<div ondragover="return false">
<div ondragover="event.preventDefault()">
在dragenter和dragover事件期间调用preventDefault方法将指示在该位置允许丢弃。但是,您通常希望仅在某些情况下调用preventDefault方法,例如,仅在拖动链接时调用。要执行此操作,请调用检查条件的函数,并仅在满足条件时取消事件。如果不满足条件,请不要取消该事件,如果用户释放鼠标按钮,则不会发生丢弃。
https://developer.mozilla.org/en-US/docs/Web/Events/dragover
/* events fired on the drop targets */
document.addEventListener("dragover", function( event ) {
// prevent default to allow drop
event.preventDefault();
}, false);
答案 2 :(得分:3)
我不确定我是否正确理解你的问题,但是如果你想阅读删除的文件,你需要处理dragover事件并至少放在这行代码中:
evt.dataTransfer.dropEffect = 'copy';
否则dropEffect默认为null,您将不会获得任何数据。
答案 3 :(得分:1)
对我来说很好。您是将其作为HTTP或FILE URL加载吗?我认为它必须是Chrome的HTTP网址。