首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >防止拖拽本地代码/项触发拖拽工具

防止拖拽本地代码/项触发拖拽工具
EN

Stack Overflow用户
提问于 2011-12-11 12:47:34
回答 1查看 468关注 0票数 0

我正在构建一个HTML5文件上传,我希望有拖拽时,用户拖拽窗口上的文件触发。这个想法是,dragenter将触发一个灯箱样式的叠加,显示放置区域。

这是我的代码。(jQuery)

代码语言:javascript
复制
$(window).bind('dragenter', function (e) {
    e.stopPropagation();
    e.preventDefault();
    $('#uploadWrapper').show();
}).bind('dragexit', function (e) {
    e.stopPropagation();
    e.preventDefault();
    $('#uploadWrapper').hide();
});

这可以很好地工作,但如果用户抓取图像或一些文本并拖动它,它也会触发dragenter事件。有没有一种方法可以告诉我什么是被拖动的,以便只有实际的文件上传触发器显示覆盖?

谢谢..

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-12-22 08:37:01

我认为像下面这样的东西应该可以工作;(尽管我不认为它对Opera友好)。

代码语言:javascript
复制
function DraggedFiles(e)
{
    for (n in e.dataTransfer.types)
    {
        if (e.dataTransfer.types[n] === "Files") return true;
    }

    return false;
}

然后,对于您的dragEnter事件,只需添加:

代码语言:javascript
复制
if (DraggedFiles(e))
{
    // files were dragged onto here
} else {
    // something other than files were dragged
}

你想做检查并采取行动/不行动的地方。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8462026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档