Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript HTML5删除事件不';除非处理好dragover,否则无法工作_Javascript_Html_Google Chrome_Drag And Drop_Dom Events - Fatal编程技术网

Javascript HTML5删除事件不';除非处理好dragover,否则无法工作

Javascript HTML5删除事件不';除非处理好dragover,否则无法工作,javascript,html,google-chrome,drag-and-drop,dom-events,Javascript,Html,Google Chrome,Drag And Drop,Dom Events,我正在收听drop事件并执行e.preventDefault()操作,但它正在尝试打开被删除的文件。直到昨天,天气一直很好。但就在今天,它因为某种未知的原因破裂了。我做了一个调查来反映同样的情况 编辑: 如果不执行dragover事件,则无法处理drop。即使在小提琴中,如果您对dragover进行注释,它也不会起作用。 在实际工作中,我错过了dragover的拼写,但这仍然是一个问题drop如果没有dragover 小提琴实际上是在工作,但它的身体太小了(只有文本DROP在那里)。它只在dro

我正在收听
drop
事件并执行
e.preventDefault()
操作,但它正在尝试打开被删除的文件。直到昨天,天气一直很好。但就在今天,它因为某种未知的原因破裂了。我做了一个调查来反映同样的情况

编辑: 如果不执行
dragover
事件,则无法处理
drop
。即使在小提琴中,如果您对
dragover
进行注释,它也不会起作用。
在实际工作中,我错过了
dragover
的拼写,但这仍然是一个问题
drop
如果没有
dragover


小提琴实际上是在工作,但它的身体太小了(只有文本
DROP
在那里)。它只在
drop
文本不在全身的那一小块区域上进行
drop
事件。所以我认为它不起作用。很抱歉给您添麻烦。

对我来说很好。您是将其作为HTTP还是文件URL加载?我相信它需要是一个带有Chrome的HTTP URL。

我猜这是因为没有dragOver事件处理程序,使用了dragOver事件的默认事件处理程序,因此,之后不会触发drop事件。在dragOver事件之前,需要使用
e.prevent default
处理dragOver事件。

我不确定是否正确理解了您的问题,但如果您想读取已删除的文件,则需要处理dragOver事件,并至少在其中放置以下代码行:

evt.dataTransfer.dropEffect = 'copy';
否则,dropEffect默认为空,您将无法获得任何数据。

如果要允许删除,必须通过取消事件来防止默认处理。您可以通过从属性定义的事件侦听器返回false或调用事件的event.preventDefault方法来完成此操作。后者在单独脚本中定义的函数中可能更可行

<div ondragover="return false">
<div ondragover="event.preventDefault()">

作为HTTP本地主机。直到昨天,天气一直很好。我不明白发生了什么。JSFIDLE在Chrome中的工作与我预期的一样。文件一放完我就收到了DragOver的信息。当我评论这个警告时,我可以删除它并得到删除的消息。这对我来说也很有用。但是在写
DROP
的区域。不是在整个身体里。所以我认为它不起作用。很抱歉不过,我编辑了我的问题。对不起,刚才有这个问题,你的问题帮我解决了。我在dragover事件中返回false,drop开始工作。。谢谢有时,定义一点css
body{width:300px;height:300px;border:1px solid 35; f1f1f1;}
会有所帮助,这样您就可以实际查看拖放区域的大小。顺便说一句,这是阻止我进入
drop()
事件的罪魁祸首。除了我必须使用
evt.originalEvent.dataTransfer.dropEffect=“copy”
防止未捕获类型错误:当我在放置区域上保存文件时,无法设置未定义的属性“dropEffect”。@iiminov您必须这样做,因为您使用的是jQuery。jQuery创建了一个自定义事件对象,并将原始对象保留在
originalEvent
属性下。谢谢你的信息@4年后的克罗诺克利,我仍然这么说。糟糕的设计谢谢你的详细回答。还有一段您没有引用,但IMHO非常重要,可以解释原因:“dragenter和dragover事件的侦听器用于指示有效的放置目标,即可以放置拖动项目的位置。网页或应用程序的大多数区域都不是放置数据的有效位置。因此,这些事件的默认处理方式是不允许删除。”
  /* events fired on the drop targets */
  document.addEventListener("dragover", function( event ) {
      // prevent default to allow drop
      event.preventDefault();
  }, false);