Is it possible to use jQuery's drop event for dragging files from the desktop?

If so, how do I get the dropped file data?

推荐答案

这有点混乱(你至少需要处理3个事件),但这是可能的.

首先,您需要为dragoverdragenter添加Eventhandler,并阻止这些事件的默认操作,如下所示:

$('#div').on(
    'dragover',
    function(e) {
        e.preventDefault();
        e.stopPropagation();
    }
)
$('#div').on(
    'dragenter',
    function(e) {
        e.preventDefault();
        e.stopPropagation();
    }
)

It's actually important to call preventDefault on these events, otherwise, some browsers may never trigger the drop event.

然后,您可以添加拖放处理程序,并使用e.originalEvent.dataTransfer.files访问拖放的文件:

$('#div').on(
    'drop',
    function(e){
        if(e.originalEvent.dataTransfer && e.originalEvent.dataTransfer.files.length) {
            e.preventDefault();
            e.stopPropagation();
            /*UPLOAD FILES HERE*/
            upload(e.originalEvent.dataTransfer.files);
        }
    }
);

Now you are able to drag files from the desktop/explorer/finder in the div and access them.

http://jsfiddle.net/fSA4N/5/

Jquery相关问答推荐

使用动态类名的gm_addStyle?

如何从 jQuery 转到 React.js?

使用淡入淡出和追加

jQuery - 向下滚动时缩小的粘性标题

仅在 _some 字段上通过 Enter 键禁用表单提交

jquery - 单击事件不适用于动态创建的按钮

当有多个具有相同 ID 值的元素时,jQuery 是如何工作的?

根据属性'data-sort'对jQuery中的div进行排序?

jQuery UI 对话框 - 关闭后不打开

如何使div全屏?

datatable jquery - 表头宽度与正文宽度不对齐

用jquery替换锚文本

您如何处理 jQuery 中的表单更改?

如何使用 jquery 动态更改 iframe 中的内容?

jQuery:如果页面底部有外部 JS,为什么要使用 document.ready?

从客户端的对象数组中获取最新日期的优雅方法是什么?

超时 jQuery 效果

$.getJSON 在 IE8 中返回缓存数据

使用 jQuery 获取鼠标单击图像的 X/Y 坐标

jQuery中的wait()或sleep()函数?