在Dragenter事件期间获取文件名 [英] Getting the filename during the dragenter event

查看:179
本文介绍了在Dragenter事件期间获取文件名的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在用JavaScript和HTML开发一种交互式文件上传器,在其中需要访问当前拖动文件的文件名(触发dragenter事件的文件名)。

I'm developing an interactive file-uploader in JavaScript and HTML in which I need to access the currently dragging files filename (the one that triggers the dragenter event).

但是有一个问题,事件dataTransfer成员不包含任何文件,我真的需要在抛出drop事件之前知道文件名。

But there's a problem, the events dataTransfer member does not contain any files, and I really need to know the filename before the drop event is thrown. Is it possible?

提前谢谢。

推荐答案

我猜您可能需要为其声明一个局部变量...。记住在拖动开始时对其进行初始化....在拖动结束时将其杀死...(拖动/放下)

在 DragStart中分配它.....(注意:在dragstart中,您可以使用 event.dataTransfer.setData将任何值分配给dataTransfer ...但是它是不能在DragEnter / DragOver中访问)

assign it in "DragStart".....(NOTE: in dragstart u can assign any value to dataTransfer by using "event.dataTransfer.setData"....but it is not accessible in DragEnter/DragOver)

因为 DragEnter由于安全原因无法访问dataTransfer.getData()...
仅可在 onDrop操作....

because "DragEnter" can not access dataTransfer.getData() due to security reason... it is ONLY accessible in "onDrop" action.....

请参阅以下链接:
//由于以下原因,此处无法使用获取数据(对于跨框架): b $ b http://msdn.microsoft .com / zh-CN / library / ie / ms536436(v = vs.85).aspx

//在DragEnter / DragOver中使用dataTransfer.getData不适用于Chorme
http://code.google.com/p/chromium/issues/detail?id=50009

//use dataTransfer.getData in DragEnter/DragOver doesn't work for Chorme http://code.google.com/p/chromium/issues/detail?id=50009

// dataTransfer.getData。...
http://code.google.com/p/chromium/issues/detail?id=2141

//dataTransfer.getData is ONLY accessible in DROP for security reason.... http://code.google.com/p/chromium/issues/detail?id=2141

,或者您可以检查以下链接...看是否有帮助:
http://weblog.bocoup.com/using-datatransfer-with-jquery-events/

更多:
您还可以使用localStorage / sessionStorage调用,它将数据保存到浏览器缓存中,localStorage可以在跨窗口(但使用同一浏览器)中使用,sessionStorage是仅可访问同一会话。
只需执行以下操作:
在您的DragStart->

MORE: You can also use localStorage/sessionStorage call, which will save the data into browser cache, localStorage can be used in Cross Window (but same browser), sessionStorage is only accessible of the same session. Just do something like: In your DragStart ->

localStorage.setItem("DraggedFileName",myFileName);

在您的DragEnter中->

In your DragEnter ->

var myFileName = undefined;
if(localStorage.getItem("DraggedFileName"))
myFileName = localStorage.getItem("DraggedFileName");

在您的DropEvent和DragEnd中->

In your DropEvent and DragEnd ->

if(localStorage.getItem("DraggedFileName"))
    localStorage.removeItem("DraggedFileName"); //Remove after Drop/DragEnd, clear it

希望对您有所帮助...。

Hope it helps....

这篇关于在Dragenter事件期间获取文件名的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆