← Back to release summary

Preserving dropEffect Values from dragover to drop Events

Category
Miscellaneous
Type
Chromium catches up
Status
Proposed (Chrome Proposed)
Intent stage
None

Summary

The HTML5 Drag and Drop API allows web applications to handle drag-and-drop operations through a series of events: `dragstart`, `dragenter`, `dragover`, `dragleave`, `drop`, and `dragend`. During these events, the [`dataTransfer.dropEffect`](https://www.w3.org/TR/2011/WD-html5-20110113/dnd.html#dom-datatransfer-dropeffect) property indicates which operation (copy, move, link, or none) should be performed. According to the [HTML5 specification](https://www.w3.org/TR/2011/WD-html5-20110113/dnd.html#dndevents), the `dropEffect` value set by web applications during the last `dragover` event should be preserved and available in the subsequent `drop` event. However, Chromium-based browsers were overwriting the web application's `dropEffect` value with the browser's own negotiated operation before the `drop` event fired, breaking specification compliance and limiting developer control over drag-and-drop behavior.

Motivation

The current behavior: - Violates the HTML5 specification: Contradicts the standardized behavior defined in the HTML5 Drag and Drop API - Breaks developer control: Removes the ability for web applications to manage their own drag-and-drop operations - Creates unpredictable UX: The operation indicated during drag (via cursor feedback) may not match what's available in the drop handler - Forces workarounds: Developers must store `dropEffect` values in global variables or custom data attributes rather than using the standard API - Limits functionality: Makes it impossible to build spec-compliant file managers, code editors, and other applications requiring sophisticated drag-and-drop

Standards & signals

View on chromestatus.com