🍋
Menu
General

Drag and Drop

拖放(文件输入方式)

一种用户交互模式,通过将文件从桌面或文件管理器直接拖入 Web 应用程序的放置区域来选择文件,提供了比传统文件选择对话框更直观的替代方案。

技术细节

HTML5 拖放 API 在目标元素上使用 dragenter、dragover、dragleave 和 drop 事件。drop 事件的 dataTransfer.files 属性提供被放置文件的 FileList。对于目录,DataTransferItem.webkitGetAsEntry() 方法通过 File and Directory Entries API 实现递归读取。拖动期间的 CSS 视觉反馈(边框高亮、覆盖消息)对可用性至关重要。该 API 与 回退方案一起工作以确保可访问性。

示例

```javascript
// Drag and drop file handler
dropZone.addEventListener('drop', async (e) => {
  e.preventDefault();
  const files = Array.from(e.dataTransfer.files);
  for (const file of files) {
    console.log(`${file.name}: ${(file.size/1024).toFixed(1)} KB`);
    const data = await file.arrayBuffer();
    processFile(data);
  }
});
```

相关术语