【发布时间】:2017-07-07 15:05:30
【问题描述】:
我希望能够检测用户何时将文件拖入窗口并在整个应用程序上弹出一个覆盖层,显示用户可以将文件上传到的各种文件夹。
到目前为止,我知道我可以收听“dragenter”的窗口并显示我的叠加层,并收听“dragleave”的叠加层以隐藏它,但问题似乎是拖动拖放区会导致触发叠加层的 dragleave 事件,使叠加层隐藏(使窗口的 dragenter 事件显示叠加层,依此类推)。
我将 Dropzone.js 用于我的文件夹 dropzones。我环顾四周,看到了与我类似的问题,但没有一个能解决这个问题。
编辑:我在 StackOverflow 的其他地方找到了(某种)解决方案:jQuery Drag-and-Drop Flickering on Hover (Webkit only)
解决方案是检查dragleave 上的事件,如果pageX 和pageY 都为0,则表示dragleave 是因为用户离开了窗口,而不是拖动到其中一个dropzone 上。
【问题讨论】:
-
您要显示叠加层的目的是什么?停止文件上传?
-
该页面默认显示已上传的文件。当用户将文件拖到屏幕上时,叠加层将显示他们可以上传到的可用文件夹(有点像 imgur.com 处理文件上传叠加层的方式,除了有多个放置区且没有全局放置区)。因此,叠加层的目的是向用户显示文件夹放置区。
-
您只是想显示叠加层或期望用户输入,例如从叠加层中选择文件夹?
-
我想在用户拖动文件时显示覆盖。叠加层包含文件的放置区。然后,用户将文件拖放到叠加层的放置区之一,叠加层就会消失。
-
这个答案提供了关于这个问题的更多细节stackoverflow.com/questions/12945307/…
标签: javascript drag-and-drop dropzone.js