当您将文件从桌面拖到浏览器时触发的 Javascript 事件是什么

发布于 2024-12-31 22:25:04 字数 250 浏览 0 评论 0原文

我正在尝试实现一个类似于 gmail 的文件上传系统。我已经完成了所有 Fileupload / AJAX 问题,并且效果完美。我遇到的唯一问题是用户反馈。

例如..在gmail中,当您将文件拖到浏览器(假设IE9+用户)时,会弹出一个区域,让您将文件放入其中。我认为这是由框架捕获的某种JavaScript事件(比如说 Jquery),它允许我在放置区域制作一些很酷的动画。

我的问题很简单..我应该捕获什么事件来执行此操作?有什么想法吗?我做错了吗?

I'm trying to implement a file upoload system similar to gmail's. I've already done all the Fileupload / AJAX issue and it works perfect. The only problem that I have is User Feedback.

For example.. in gmail, when you drag a file to your browser (assuming IE9+ user), there's an area that pops up, letting you drop the file in. I think it is some kind of JavaScript event that is captured by a framework (let's say Jquery), that allows me to make some cool animations on the drop area.

My question is simple.. What event should I capture to do this? Any ideas? Am I doing it wrong?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

猫七 2025-01-07 22:25:04

主要事件就是drop

您还需要处理 dragenterdragleave 否则放置操作只会导致加载放置的文件。您还可以选择观看dragover

我有一些注册这些处理程序的代码,如下所示:

var $dz = $('#dropzone');
$dz.on({
    dragenter: dragenter,
    dragleave: dragleave,
    dragover: false,
    drop: drop
});

function dragenter() {
    $dz.addClass('active');
};

function dragleave() {
    $dz.removeClass('active');
};

function drop(e) {
    var dt = e.originalEvent.dataTransfer;
    if (dt) {
        var files = dt.files;
        ...
    }
    $dz.removeClass('active');
};

在这种情况下, dragenterdragleave 处理程序只是为了在拖动东西时更改放置区域的外观进入其中。

The main event is just drop.

You will also need to handle dragenter and dragleave otherwise the drop action will just cause a load of the dropped files. You may optionally also watch dragover.

I have some code that registers these handlers, like so:

var $dz = $('#dropzone');
$dz.on({
    dragenter: dragenter,
    dragleave: dragleave,
    dragover: false,
    drop: drop
});

function dragenter() {
    $dz.addClass('active');
};

function dragleave() {
    $dz.removeClass('active');
};

function drop(e) {
    var dt = e.originalEvent.dataTransfer;
    if (dt) {
        var files = dt.files;
        ...
    }
    $dz.removeClass('active');
};

In this case the dragenter and dragleave handlers are there just to change the appearance of the drop zone when stuff is being dragged into it.

千纸鹤带着心事 2025-01-07 22:25:04

它称为drop,您需要的事件对象属性将位于originalEvent 属性中。

$(element).on("drop",function(e){
  console.log(e.originalEvent)
});

如果我没记错的话,您还需要在同一元素上取消绑定dragenter和dragleave,以便它触发放置事件。

$(element).on("dragenter dragleave", false);

It's called drop, and the properties you need from the event object will be in the originalEvent property.

$(element).on("drop",function(e){
  console.log(e.originalEvent)
});

you also need to unbind the dragenter and dragleave on that same element for it to fire the drop event, if I remember correctly.

$(element).on("dragenter dragleave", false);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文