- From: Ian Hickson <ian@hixie.ch>
- Date: Fri, 15 Feb 2008 01:12:28 +0000 (UTC)
- To: Mihai Sucan <mihai.sucan@gmail.com>
- Cc: public-html <public-html@w3.org>
On Thu, 20 Sep 2007, Mihai Sucan wrote: > > The whole drag-and-drop API should specifically allow (mention in prose) > that scripts can: > > 1. on dragstart setup several types of data - in different formats. Say, > on dragstart a script can define setData('text/html', 'whatever') and > setData('text/plain', 'whatever2'). However, do not limit this to > textual content types: images, videos, sounds, and other binary formats > should be allowed. > > This can be done based on the source object, or based on any arbitrary > data in the source document. > > This is allowed by the spec now - but not very well explained. Yeah, this, and other clarifications of an informative nature, will be added to an introduction of that section in due course. I've added a placeholder for this. > 2. on drop, the target object can retrieve any of the available types > needed. Some targets can only accept text/html, some other text/plain, > while others can accept any type of data. > > 3. The above two points should be valid in the copy/paste scenarios > presented [2]. But for now, only two formats are allowed for paste: > text/plain and text/uri-list. [3] > > "When the user invokes a clipboard paste operation, the user agent must > act as if the user had invoked a drag on a hypothetical application > representing the clipboard, setting the data associated with the drag as > the text from the keyboard (either as text/plain or text/uri-list). If > the contents of the clipboard cannot be represented as text or URIs, > then the paste operation must not have any effect." > > That's not something "great". > > The idea is: On Windows I can copy mathematical formulas from > Mathematica, then paste in Notepad and I get the textual representation. > I can also paste the "same" data in IrfanView where I get the actual > render of the formula (like in Mathematica). The same goes for > copy/pasting HTML: in Firefox you can copy HTML, then paste it as HTML > in OpenOffice, or as plain text in Vim. > > Why not allow this on the Web? > > 4. Pasting stuff should work on any focusable element in a HTML 5 > document. Do not restrict the paste action to inputs where text can be > pasted (as it seems to be now, given the type restriction). Allow the > scripts to do whatever they want with the provided data, with all the > provided types. > > Given the Mathematica example above: a script, on paste, could show the > textual formula and the render of the formula in the same document. > > Problem: there's a need to define a way to work with binary data in the > DOM. For example, a way take an image/png from a paste action and > display it in the document - this would be (almost?) doable with a data: > uri. > > 5. The same goes for copy: allow users to try to "copy" any focusable > element. Obviously, the UA will do nothing - unless some text can be > copied to the clipboard - a selection. However, the script could provide > some data (with the setData method). I've removed the restrictions on copy/paste that are given in the above comments. > The API provided by Microsoft [4] allows the authors to enable/disable > the cut/copy/paste operations on elements, and to attach event handlers > for all these operations. The HTML 5 spec should define something > similar. It does. Just use the drag-and-drop events. Copy-and-paste is a subset of drag-and-drop. > 6. I read the HTML 5 spec on drag and drop, then I read the > documentation from Microsoft [5] and Apple [6]. Immediately after > reading the spec I took some notes about having the type attribute for > the dataTransfer object, defined as an array which lists the available > data types. I was surprised to see exactly this idea in the Apple > documentation for WebKit. Very good. > > I strongly recommend adding the types attribute to the DataTransfer > object. Added. > 7. Also, there should be a way to check the keyboard modifiers in the > events (ctrl, shift, and alt). This is to allow authors to build web > applications for to the following two scenarios, when the user starts > dragging some object to a target: > > a) The default action is to move the object. With Shift the object would > be copied, not moved. > > b) The default action is to copy the content of the object as HTML. > Using Ctrl the content would be copied as text/plain. > > Of course, there more use cases for allowing key modifiers - it really > depends on the creativity of authors. Think of sliders, other complex > form widgets, 3D objects, etc. > > If I am not mistaken, Internet Explorer already provides these > attributes. [7] There's a note in the spec to add these. I'm waiting for the WebAPI working group to work out what should be going on with keys, so that I don't have to keep changing this to track progress over there. The story of keys in DOM Events is a very long and sad one so far. > 8. Two CSS pseudo-classes should be defined: > > a) One pseudo-class which matches the source element being dragged > :drag-src. KHTML already implements this with the :-khtml-drag > pseudo-class. [6] > > b) Another pseudo-class which matches the possible target element (when > the user moves the pointer over any other element) :drag-dest. Agreed; however, this is out of scope for this spec. We may suggest it in the rendering section, though. > 10. I find both of the descriptions of the whole drag and drop API > better on Microsoft [5] and Apple sites [6], when compared to the HTML 5 > specification. Maybe you could take a look and see what could be done to > "ease" the wording. > > Currently, the spec seems to lack a good overview (from "above") of how > everything works. Yeah, we'll add an introduction section with examples and diagrams in due course. Cheers, -- Ian Hickson U+1047E )\._.,--....,'``. fL http://ln.hixie.ch/ U+263A /, _.. \ _\ ;`._ ,. Things that are impossible just take longer. `._.-(,_..'--(,_..'`-.;.'
Received on Friday, 15 February 2008 01:12:49 UTC