Drag and Drop API

The HTML Drag and Drop API lets a user move data or an element to a drop target, but dragging should never be the only way to complete an action.

What you will learn

Basic flow

source.addEventListener('dragstart', (event) => {
  event.dataTransfer.setData('text/plain', source.id);
});

target.addEventListener('dragover', (event) => {
  event.preventDefault();
});

target.addEventListener('drop', (event) => {
  event.preventDefault();
  const id = event.dataTransfer.getData('text/plain');
  console.log('Dropped:', id);
});

The drop target must cancel dragover to signal that it accepts a drop. Data is transferred through DataTransfer.

Accessibility and safety

Common mistakes