<div class="im">>> As you stated, both IE and Safari have this thing pretty nailed down for<br>>> quite a while now already.<br><br></div>> Both IE and Safari are quite buggy when it comes to drag-and-drop<br>
> actually, at least compared to what the spec says (especially IE).<div class="im"><br>>> Firefox has done a considerable amount of work to implement this as well<br>>> and at the very least advertises it as a "complete" feature. Is there<br>
>> some way to measure the quality of implementations?<br><br></div>> We'll need a test suite.<br><br><div>I started to summarize all the bugs and quirks of the browsers implementing these features but there are really too many in all browsers. It'd be easier to have a positive test suite to show what is actually working. You can search the bug reports for more info.</div>
<div><br></div><div>No browser has implemented the copy/paste part of the spec.</div><div><br></div><div>It's also noteworthy that the interaction with the OS, other applications and cross-window drag/drop is largely left up to the browser. So, even when everything works, the specifics of various implementations will vary. For example to override a link URI you want to set "text/x-moz-url" in Mozilla to get expected behavior of "text/uri-list" in other browsers.</div>
<div><br></div><div>As for lazy data...</div><div><br></div><div>If the drag/drop is actually a copy/paste, you still have to serialize ALL data. If your script made the assumption that it wouldn't, then that could cause some interesting bloated clipboard. To me, this is just another example of why the copy/paste API should be separate.</div>
<div><br></div><div>I've also suggested that you allow for lazy loading of data as entire files using: dataTransfer.setRemoteData(type, uri);</div><div><br></div><div>Using a remote URI in the clipboard, that API could lazily load data even after the document is unloaded.</div>
<div><br></div><div>But I also like the idea of a callback.</div><div><br></div><div>(Most annoying DnD bug right now: IE blocks the thread which means no setTimeout, no animations or anything asynchronous during a drag operation.)</div>