当前位置: 首页 > 知识库问答 >
问题:

在上传文件时检测已取消的拖放操作

盖嘉庆
2023-03-14

这是我想要的行为:

  1. 用户开始从文件资源管理器拖动文件。
  2. 当文件悬停在浏览器窗口上时,会出现3个放置区。
  3. 当用户取消拖放或拖放文件时,拖放区域消失

我遇到的问题是#3。
文档上使用拖动时,拖放区域显示正常,但我无法让它们再次消失。

我尝试过绑定<code>dragend

哪个事件是正确的听?

共有3个答案

越嘉茂
2023-03-14

好吧,< code>dragstart和< code>dragend事件似乎只有在从浏览器拖动东西到浏览器时才会触发,这在您的情况下几乎没有用。我似乎无法停止闪烁,但是如果您给< code>dragenter和< code>dragleave事件添加一个超时,您可以最小化闪烁:

window.onload=function(){
    var drag = new (function(){
        var timeout;
        this.detected = function(){
            return !(timeout === undefined)
        }
        this.start = function(){
            clearTimeout(timeout);
        }
        function endDrag(){
            for (var i=0;i<3;i++) //no longer dragging, remove drop zones
                document.getElementsByClassName("dropZone")[i].style.display="none";
        }
        this.end = function(){
            timeout = setTimeout((function(){timeout=undefined;endDrag();}),1500)
        }
    })()
    document.body.ondragenter = function(){
        drag.start();
        for (var i=0;i<3;i++) //drag started, show drop zones
            document.getElementsByClassName("dropZone")[i].style.display="block";
    }
    document.body.ondragleave = function(event){
        event = event||window.event
        if ((event.source||event.target)==document.body)
            drag.end();
    }
}

希望这能有所帮助,如果它不完美,很抱歉。:-(

方昊阳
2023-03-14

在<code>文档和<code>dragover,以分别隐藏和显示区域。

袁枫涟
2023-03-14

我还没有完全测试它,但似乎您可以利用dragenterdragoff在每个元素上触发的恼人行为。

var counter = 0;
$(document).on('dragenter', function () { 
  if (counter++ === 0) {
    console.log('entered the page');
  }
});

$(document).on('dragleave', function () {
  if (--counter === 0) {
    console.log('left the page');
  }
});

如果通过按escape取消拖动,则似乎也会起作用。

http://jsbin.com/atodem/2/

 类似资料:
  • 我目前正在尝试通过调用一个以MultiPartFormData作为输入的资源来编写一个IT测试。 它在应用程序“正常”启动时工作,但在使用DropwizardAppRule助手启动时不工作。 这是我的代码: QORUS_APP的发音如下: 我收到以下错误: 消息找不到媒体类型=多部分/表单数据,类型=类组织.玻璃鱼.泽西岛.媒体.多部分.表单数据多部分,通用类型=类组织.玻璃鱼.泽西岛.媒体.多部

  • 问题内容: 我在这里尝试取消文件上传时遇到了一些情况。我所做的事情是说,如果用户单击“取消”按钮,则它将仅删除iframe,这样它就不会进入将文件上传到服务器并将数据插入数据库的页面。 现在,如果用户快速单击“取消”按钮,则可以正常工作,但我意识到的问题是,如果用户单击时间很晚,则有时无法及时删除iframe该文件刚刚在用户点击“取消”按钮之前上传。 因此,我的问题是,如果用户在单击“取消”按钮之

  • 问题内容: 拖放文件上传可以在Firefox 3.6中完成。 通过Google搜索 html5拖放文件上传- gmail,可以看到以下 内容: http://www.appelsiini.net/2009/10/html5-drag-and-drop-multiple-file-upload http://www.thecssninja.com/javascript/drag-and-drop-u

  • 本文向大家介绍跨浏览器拖放HTML文件上传?,包括了跨浏览器拖放HTML文件上传?的使用技巧和注意事项,需要的朋友参考一下 对于跨浏览器的HTML File Uploader,请使用FileDrop。它几乎可以在所有现代Web浏览器上使用。 根据官方规范- FileDrop是一个独立的跨浏览器,用于HTML5,旧版,AJAX,拖放,JavaScript文件上传

  • 接口说明 上传文件(临时存放) 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 API地址 POST /wish3dearth/api/scene/v1.0.0/uploadTempFile 是否需要登录 是 请求字段说明 参数 类型 请求类型 是否必须 说明 token string header 是 当前登录用户的TOKEN sceneId stri

  • 接口说明 上传文件(临时存放) 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 如开启https功能,请求地址的协议应改为https,如:https://www.example.com/wish3dearth/api/access/v1.0.0/getLicenseInfo API地址 POST /wish3dearth/api/scene/v1.0.0