- From: James Greene <james.m.greene@gmail.com>
- Date: Fri, 23 May 2014 13:14:26 -0500
- To: Glenn Maynard <glenn@zewt.org>
- Cc: Robin Berjon <robin@w3.org>, Aryeh Gregor <ayg@aryeh.name>, Anne van Kesteren <annevk@annevk.nl>, "Hallvord R. M. Steen" <hsteen@mozilla.com>, public-webapps <public-webapps@w3.org>
- Message-ID: <CALrbKZjEG=v3QDtnU7vq4QFBYvCRW3WG5hL2csx2QupCum8U8g@mail.gmail.com>
Maybe it's just me but... I would personally never want the browser to
automatically assume what I wanted copied and into which clipboard
segments, with the possible exception of a Selection.
I would prefer something very explicit, e.g.:
```js
window.clipboard.copy({
"text/plain": "BLAH",
"text/html": "<b>Blah</b>",
"application/rtf": "{\\rtf1\\ansi\n{\\b Blah}}",
"text/x-markdown": "**Blah**"
});
```
Also, Hallvord et al: switching to a standalone API would also mean that we
can drop all of the `cut`-specific parts of the spec since `cut` requires
an active Selection, right?
Sincerely,
James Greene
On Fri, May 23, 2014 at 10:13 AM, Glenn Maynard <glenn@zewt.org> wrote:
> Hallvord: By the way, please add the editor of the HTML spec to the
> beginning of the list in your references. It's strange to list a bunch of
> author names, but not the person who actually writes the spec.
>
>
> On Fri, May 23, 2014 at 8:21 AM, James Greene <james.m.greene@gmail.com>wrote:
>
>> This kind of copy does not implicitly have anything to do with Selection,
>> unless we continue to have its default action be copying the currently
>> selected text. It is substantially more likely to be used for custom text
>> insertion.
>>
>
> I'd assume something like:
>
> // Copy text:
> window.copyToClipboard("hello");
> // Copy HTML text:
> span = document.createElement("span");
> span.innerHTML = "<b>hello</b>";
> window.copyToClipboard(span);
> // Copy an image from a CanvasImageSource:
> window.copyToClipboard(canvas);
> window.copyToClipboard(img);
> // Copy the selection:
> window.copyToClipboard(window.getSelection());
> // Copy HTML text with plaintext alternative:
> dt = new DataTransferItemList();
> dt.add("hello", "text/plain");
> dt.add(span.innerHTML, "text/html");
> window.copyToClipboard(dt);
>
> This avoids the busywork of creating a DataTransfer in common cases, but
> allows using DataTransfer when you want to do something more advanced, like
> provide alternatives or explicitly specify a MIME type. Note
> that DataTransferItemList isn't actually constructable right now. Note
> that I used DataTransferItemList in the example and not DataTransfer, since
> DataTransfer is only relevant to drag-and-drop.
>
> I wonder what the right way to handle images is. Native Windows
> applications can copy pixel data to the clipboard, then paste it back out.
> DataTransferItem wants things to act like strings, though, so you'd have
> to encode the image to a file format. If that's PNG, that's an expensive
> conversion. Maybe DataTransferItem should be able to return an ImageSource.
>
> (As an aside, why is the paste event's .clipboardData not set to the text
> being pasted? I wanted to see what pasting images did in current browsers,
> but at least in Chrome there's nothing in there, even if I just paste plain
> text.)
>
> --
> Glenn Maynard
>
>
Received on Friday, 23 May 2014 18:15:15 UTC