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.
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