- From: Hallvord R. M. Steen <hsteen@mozilla.com>
- Date: Tue, 20 May 2014 03:40:20 -0700 (PDT)
- To: Anne van Kesteren <annevk@annevk.nl>
- Cc: public-webapps <public-webapps@w3.org>
>> However, if a scripted copy event can't take a payload and have it placed
>> on the clipboard, what's the point of making script-generated copy events
>> possible in the first place? If there's no point I'd rather disallow them.
> I don't follow. document.execCommand() is performing an *action*.
> Dispatching an event is not an action. It can be part of one, to
> notify observers, but it's not the actual thing that causes things to
> happen.
It seems somewhat confusing to generate copy events that notify listeners about something that won't happen. But I guess this is a philosophical problem that is common for all synthetic events, except the click one..
Calling document.execCommand('copy') will by itself dispatch a "copy" event. If you have some data you want to write to the clipboard, the old way to do it was more or less
var data = 'Hello';
document.addEventListener('copy', function cp(e){
e.preventDefault();
e.clipboardData.setData('text/plain', data);
document.removeEventListener('copy', cp, false);
}, false)
document.execCommand('copy', false, null);
which seems like overly cumbersome scaffolding for this use case. Hence the idea that we could just let document.dispatchEvent(new ClipboardEvent('copy', {dataType:'text/plain', data:data})) cause a real write operation to the clipboard.
I wonder how fancy we can get with execCommand()'s value argument? Could we go for something like this instead of the scripted event payload?
document.execCommand('copy', false, {'text/plain':'Hello', 'text/html':'<p><b>Hello</b></p>'}); ?
- Hallvord
Received on Tuesday, 20 May 2014 10:40:48 UTC