mkr*_*man 3 html javascript html5 drag-and-drop
我正在开发一个JavaScript和HTML的交互式文件上传器,我需要访问当前拖动的文件文件名(触发dragenter事件的文件名).
但是有一个问题,事件dataTransfer成员不包含任何文件,我真的需要在抛出drop事件之前知道文件名.可能吗?
提前致谢.
我猜你可能要为它声明一个局部变量....并且记得在拖动开始时初始化它....当拖动结束时杀死它...(dragend/drop)
在"DragStart"中分配.....(注意:在dragstart中你可以使用"event.dataTransfer.setData"将任何值赋给dataTransfer ....但是在DragEnter/DragOver中无法访问它
因为安全原因"DragEnter"无法访问dataTransfer.getData()...它只能在"onDrop"动作中访问.....
请参阅下面的链接://获取数据不能在这里使用(对于跨框架),原因如下:http://msdn.microsoft.com/en-us/library/ie/ms536436(v = vs.85) .aspx
//在DragEnter/DragOver中使用dataTransfer.getData对Chorme不起作用 http://code.google.com/p/chromium/issues/detail?id=50009
出于安全原因,只能在DROP中访问//dataTransfer.getData .... http://code.google.com/p/chromium/issues/detail?id=2141
或者您可以查看以下链接...看看它是否有用:http: //weblog.bocoup.com/using-datatransfer-with-jquery-events/
更多:您还可以使用localStorage/sessionStorage调用,它将数据保存到浏览器缓存中,localStorage可以在Cross Window中使用(但是相同的浏览器),sessionStorage只能访问同一个会话.只需执行以下操作:在DragStart中 - >
localStorage.setItem("DraggedFileName",myFileName);
Run Code Online (Sandbox Code Playgroud)
在你的DragEnter - >
var myFileName = undefined;
if(localStorage.getItem("DraggedFileName"))
myFileName = localStorage.getItem("DraggedFileName");
Run Code Online (Sandbox Code Playgroud)
在你的DropEvent和DragEnd中 - >
if(localStorage.getItem("DraggedFileName"))
localStorage.removeItem("DraggedFileName"); //Remove after Drop/DragEnd, clear it
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你....
| 归档时间: |
|
| 查看次数: |
3610 次 |
| 最近记录: |